Javascript 检查不同声明对象的instanceof
我正在阅读如何在JavaScript中声明对象 有基于对象的方法和基于函数的方法。在下面的代码中,我使用object literal创建了一个名为Person1的对象,并使用function-based创建了Person2 然后我尝试检查它们的实例。对于Person2,我得到“true”,但对于Person1,我得到“TypeError:'instanceof'右侧不可调用” 如何使用object literal创建一个对象,并且仍然获得正确的instanceof?您可以这样做,但实际上不应该这样做。允许您重载以下行为:Javascript 检查不同声明对象的instanceof,javascript,Javascript,我正在阅读如何在JavaScript中声明对象 有基于对象的方法和基于函数的方法。在下面的代码中,我使用object literal创建了一个名为Person1的对象,并使用function-based创建了Person2 然后我尝试检查它们的实例。对于Person2,我得到“true”,但对于Person1,我得到“TypeError:'instanceof'右侧不可调用” 如何使用object literal创建一个对象,并且仍然获得正确的instanceof?您可以这样做,但实际上不应该这
var Person1={
姓名:“约翰”,
[Symbol.hasInstance](实例){
返回实例===this;
}
}
职能人员2(){
this.name=“Jane”;
}
var bob=人1;
var bobby=新人2();
日志(Person1的bob实例);
console.log(Person2的bobby实例)代码>你可以这么做,但你真的不应该这么做。允许您重载以下行为:
var Person1={
姓名:“约翰”,
[Symbol.hasInstance](实例){
返回实例===this;
}
}
职能人员2(){
this.name=“Jane”;
}
var bob=人1;
var bobby=新人2();
日志(Person1的bob实例);
console.log(Person2的bobby实例)
Person1
是指{name:“John”}
对象
不是构造函数
,所以你不能在Person1
而Person2
是一个构造函数
,因此您可以在Person2
上执行instanceof
var Person1={
姓名:“约翰”
}
职能人员2(){
this.name=“Jane”;
}
var bob=人1;
var bobby=新人2(“约翰”);
console.log(bob==Person1)//true
console.log(对象的bob instanceof)//true
console.log(bobby instanceof Person2)//true
console.log(bobby instanceof Object)//true
console.log(bobby==Person2)//false
Person1
是对{name:“John”}
对象的引用
不是构造函数
,所以不能对Person1
执行实例
而Person2
是一个构造函数
,因此您可以在Person2
上执行instanceof
var Person1={
姓名:“约翰”
}
职能人员2(){
this.name=“Jane”;
}
var bob=人1;
var bobby=新人2(“约翰”);
console.log(bob==Person1)//true
console.log(对象的bob instanceof)//true
console.log(bobby instanceof Person2)//true
console.log(bobby instanceof Object)//true
log(bobby==Person2)//false
有意义。让我困惑的是,我可以用两种不同的方法创建对象,但其中只有一种是它的实际实例。让我困惑的是,你期望用两种不同方法创建的对象是同一事物的实例……两种不同的事物应该是不同的。让我困惑的是,我可以使用两种不同的方法创建对象,但其中只有一种是它的实际实例。让我困惑的是,你期望使用两种不同方法创建的对象是同一事物的实例……两种不同的事物应该是不同的
var Person1 = {
name: "John"
}
function Person2() {
this.name = "Jane";
}
var bob = Person1;
var bobby = new Person2();
console.log(bob instanceof Person1);
console.log(bobby instanceof Person2);