javascript的new关键字

发布于:2021-07-24 08:23:09

let b = new a()
undefined
b.constructor
? a(){}
a.constructor
? Function() { [native code] }
b.constructor
? a(){}
b.__proto__
{constructor: ?}constructor: ? a()__proto__: Object
b.__proto__.constructor
? a(){}
b.constructor
? a(){}
b.__proto__=== a.prototype
true
a.prototype.constructor
? a(){}
b.__proto__.constructor === a.constructor
false
b.constructor === a.prototype.constructor
true
b.__proto__.constructor = a.prototype.constructor
? a(){}
b.__proto__.constructor === a.prototype.constructor
true
b.__proto__.constructor
? a(){}
b.__proto__.constructor === a.prototype.constructor
true
// 综上所述的例子表面 new 不仅仅改变了this指向 而且把函数的原型
// 也赋予了变量 b 用b._proto_.constructor 或者b.constructor
// b.__proto__.constructor === a.prototype.constructor
// b.__proto__=== a.prototype
// 如上两条 可以判断 b量是来自哪个构造函数的

b instanceof a
true
拓展这个 对比 你会发现 这个关键字 其实也是判断b的构造函数 是否等于a的原型链构造函数

相关推荐

最新更新

猜你喜欢