今天爱分享给大家带来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)测试对象自身属性中是否具有指定的属性