1.引言
我们先看两段代码:
function Ninja(){ };
const ninja = new Ninja();
//1.
ninja.constructor === Ninja; //true
Ninja.prototype.constructor === Ninja; //true
上面可以看出,ninja = Ninja.propertype,因为ninja的原型是Ninja.propertype
//2.
const ninja2 = new ninja.constructor();
ninja2 instanceof Ninja; //true
第一段代码:
所有实例对象都可以访问constructor属性,constructor属性是创建实例对象的函数的引用。我们可以使用constructor属性验证实例的原始类型(与操作符instanceof非常类似)。
第二段代码:
由于constructor属性仅仅是原始构造函数的引用,因此我们可以使用该属性创建新的Ninja对象。
2.constructor属性
JavaScript中constructor属性指向创建当前对象的构造函数。
var a = 'zuckjet';
console.log(a.constructor) // ƒ String() { [native code] }
function b() {}
console.log(b.constructor) // ƒ Function() { [native code] }
var c = {name: 'zuckjet'};
console.log(c.constructor); //ƒ Object()