模拟实现 JS 核心方法
围绕 JavaScript 中 call、apply、bind、new 等核心方法的内部机制,用普通函数逐步模拟实现,覆盖 this 指向处理、参数合并、原型链与寄生组合式继承,并按照 Promise A+ 规范手写 Promise,以及兼容旧环境的 polyfill 写法。
共 4 篇更新于 2021-12-21
01模拟实现call和apply
通过把函数临时挂载到指定对象上再执行来模拟 this 指向,并用 arguments 与 eval 拼接参数,实现 call 和 apply,同时处理 null、undefined 及原始值的包装。
2019-10-08
02模拟实现bind
实现 Function.prototype.bind 时需要合并绑定参数与调用参数,通过 instanceof 判断是否被 new 调用以决定 this,并用寄生组合式继承保留原型,最后给出兼容旧环境的 polyfill。
2019-10-08
03模拟实现new
从 new 运算符创建实例对象的四个步骤出发,用普通函数模拟其行为:新建对象、通过 __proto__ 链接到构造函数原型、以该对象为 this 调用构造函数,再根据返回值决定最终返回哪个对象。
2019-10-08
04手写PromiseA+规范
2021-12-21