通过基础的代码,实现原生js
的一些方法。更有利于对JavaScript
加深理解。
部分内容具体实现可参考冴羽的深入系列。
数据类型判断
1 | function typeOf(){ |
数组去重
1 | // 类似的还有indexOf,includes,some等等 |
数组扁平化
1 | function flatten(arr) { |
浅拷贝
1 | // 它不会拷贝对象的继承属性; |
深拷贝
1 | // 简单版,忽略undefund,symbol,无法转换正则日期等对象,不能循环引用对象 |
发布订阅模式
同观察者模式区别在于,没有中间消息处理中心,可参考观察者模式 vs 发布订阅模式
1 | class EventEmitter { |
字符串模版
1 | function render(template, data) { |
防抖
1 | function debounce(func, wait) { |
节流
1 | function throttle(func, wait) { |
柯里化
1 | function curry(fn) { |
偏函数
1 | function partial(fn, ...args) { |
JSONP
1 | const jsonp = ({ url, params, callbackName }) => { |
Ajax
1 | const getJSON = function(url) { |
call、apply、bind
利用obj.fn的this指向obj。可参考JavaScript深入之call和apply的模拟实现相关内容。
1 | Function.prototype.call2 = function (context) { |
new
1 | function objectFactory() { |
instanceof
1 | function instanceOf(left, right) { |
Object.create
1 | Object.create2 = function(proto, propertyObject = undefined) { |
Object.assign
1 | Object.assign2 = function(target, ...source) { |
Promise
从一道让我失眠的 Promise 面试题开始,深入分析 Promise 实现细节
要就来45道Promise面试题一次爽到底