1.instanceOf原理
检测右边构造函数的prototype是否在左边对象的原型链上,在返回true,不在返回false
例:function Persion(name,age){
this.name = name;
this.age = age;
} ;
let p = new Persion()
console.log( p instanceOf Persion ) //true
对象p的原型链为:p.__proto__ == Persion.prototype Persion.prototype .__proto__ == Object.prototype Object.prototype.__proto__ == null
2.new关键字原理
当执行代码new Persion()时,会进行以下操作:
- 创建一个空对象obj
- 将obj的__proto__指向Persion.prototype
- 显示的绑定this,Persion.call(obj,‘ ‘jake‘, 30)
- 返回obj(前提是构造函数的返回值不是对象或者函数)
伪代码实现如下:
let obj = {}; obj.__proto__ = Persion.prototype; Persion.call(obj, ‘jake‘, 30); return obj;
原文地址:https://www.cnblogs.com/zifayin/p/10734862.html
时间: 2024-10-13 17:53:02