JS中new关键字创建一个实例的过程是什么【面试题详解】

今天爱分享给大家带来JS中new关键字创建一个实例的过程是什么【面试题详解】,希望能够帮助到大家。
1.像普通对象一样,形成自己的私有作用域( 形参赋值,变量提升 )
2.创建一个新对象,将 this 指向这个新对象( 构造函数的作用域赋给新对象 )
3.执行构造函数中的代码,为这个新对象添加属性、方法
4.返回这个新对象( 新对象为构造函数的实例 )
手写一个 new 原理如下:


function myNew(fn, ...arg){
    // 创建一个对象,让它的原型链指向 fn.prototype
    
    // 普通方法
    // let obj = {};
    // obj.__proto__ = fn.prototype;
    
    // 使用 Object.create([A对象]):创建一个空对象 obj,并让 obj.__proto__ 等于 A对象
    let obj = Object.create(fn.prototype);

    fn.call(obj, ...arg);
    return obj;
}

可以用 instanceof 测试构造函数的prototype属性是否出现在实例对象的原型链中
也可以用 obj.hasOwnProperty(prop)测试对象自身属性中是否具有指定的属性

人已赞赏
前端

JS中原型和原型链的是什么,优缺点是什么【面试题详解】

2020-12-29 17:34:06

前端

JS中call / apply / bind 有啥区别【面试题详解】

2020-12-29 17:36:03

'); })();