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)测试对象自身属性中是否具有指定的属性

原文链接:https://blog.itblood.com/4596.html,转载请注明出处。
0
目标是!成为哥布林大师!完整版 V1.1.1 DL官中[电脑/1.8G]目标是!成为哥布林大师!完整版 V1.1.1 官方中文版(目指せ!ゴブリンマスター 完全版アップデートパッチ) [战略SLG/ACT/3D作品/全动态/官中]
目标是!成为哥布林大师!完整版 V1.1.1 DL官中[电脑/1.8G]目标是!成为哥布林大师!完整版 V1.1.1 官方中文版(目指せ!ゴブリンマスター 完全版アップデートパッチ) [战略SLG/ACT/3D作品/全动态/官中]
3分钟前 有人购买 去瞅瞅看

站点公告

显示验证码
没有账号?注册  忘记密码?