javascript
js
月丶基拉
这个作者很懒,什么都没留下…
展开
-
js手写方法之--Promise
js手写方法之–Promise Promise与async/await是ES6中常用的异步操作方法,为了深刻理解Promise的用法,解读源码是一个很好的方案。其核心方法是Promise构造函数,以及.then方法,其他静态方法都是在此基础之上封装的 为了方便理解,以下代码经过了适当删减 // Promise状态常量值 // 状态还未变化 const PENDING = 0 // 成功 const FULLFILLED = 1 // 失败 const REJECTED = 2 function MyProm原创 2020-12-31 16:03:12 · 236 阅读 · 0 评论 -
js手写方法之--instanceof
js手写方法之–instanceof 这个方法是用来判断构造函数 Fn 的 prototype 属性,是否存在于 obj 的原型链之上 obj instanceof Fn 等价于以下方法 function myInstanceof (obj, Fn) { // 若obj为基本类型,返回false if (typeof obj !== 'object' || obj === null) { return false } let left = obj.__proto__ let right =原创 2020-12-28 15:12:30 · 267 阅读 · 0 评论 -
new运算符到底干了啥?
new运算符到底干了啥 创建一个空对象obj 继承这个构造函数的原型链 执行Fn.call(obj, …args) 如果这个构造函数没有返回值,或是返回值为基本类型,返回obj;否则,按照构造函数的返回 例如:现有一个构造函数Fn function Fn (x) { this.x = x } 此时执行new运算符 let obj = new Fn(...args) 则obj经历如下 let obj = (function () { // 1. 创建一个空对象_obj let _obj = O原创 2020-12-28 10:45:29 · 117 阅读 · 0 评论 -
js手写方法之--call/apply/bind
js手写方法之--call/apply/bindcall的实现apply的实现bind的实现 call的实现 /** * 核心思想: * 1. 绑定当前方法 this 为 context.fn 对象上 * 这样,执行context.fn()时,内部的this就指向了context * 2. 使用ES6新特性,展开运算符 */ Function.prototype.mycall (context, ...args) { // 若context不存在,则取 context = window con原创 2020-12-28 00:30:01 · 147 阅读 · 0 评论