js new运行流程

1. 创建一个新对象

2. 将这个新对象的隐式原型指向Class的显式原型

3. 将这个新对象作为this指针的指向,用call/apply调用Constructor

4. 如果上述Constructor调用返回对象或function就将其指向 赋值号(=) 左侧变量,否则将这个新对象指向左侧变量

// Demo
const man = new Person();

等同于:

const obj = {};
Reflect.setPrototypeOf(obj, Person.prototype)(浏览器内可使用obj.__proto__ = Person.prototype)
const res = Person.apply(obj, arguments);
if(typeof(res) === "object" || typeof(res) === "function"){
    return res;
} else {
    return  obj;
}


 

欢迎关注、点赞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章