我正在阅读《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
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);
子类化会有所不同