为什么在确定对象类型时,instanceof 运算符被认为比构造函数属性更安全?

问题描述 投票:0回答:1

我正在阅读《Web 开发人员的专业 JavaScript》,其中作者

构造函数属性最初是用于识别对象类型的。然而,

instanceof
运算符被认为是确定类型的更安全的方法。此示例中的每个对象都被视为
Object
的实例和
Person
的实例,如使用
instanceof
运算符所示:

alert(person1 instanceof Object);   //true
alert(person1 instanceof Person);   //true
alert(person2 instanceof Object);   //true
alert(person2 instanceof Person);   //true

您能否解释一下不使用

constructor
而不是
instanceof
来确定对象类型背后的问题是什么?

没有区别的传统示例可能如下:

car instanceof Car  // true
car.constructor === Car // true
javascript oop constructor instanceof
1个回答
2
投票

class A {

}

class B extends A {

}

var x = new B();

console.log('instanceof A', x instanceof A);
console.log('instanceof B', x instanceof B);
console.log('constructor = A', x.constructor === A);
console.log('constructor = B', x.constructor === B);

子类化会有所不同

© www.soinside.com 2019 - 2024. All rights reserved.