gpt4 book ai didi

javascript - 检查以不同方式声明的对象的 instanceof

转载 作者:行者123 更新时间:2023-11-30 14:45:56 25 4
gpt4 key购买 nike

我正在阅读如何在 JavaScript 中声明对象。

有对象字面量方式和基于函数的方式。在下面的代码中,我使用对象文字创建了一个名为 Person1 的对象,并使用基于函数的方法创建了一个名为 Person2 的对象。

然后我尝试检查它们的实例。对于 Person2,我得到“true”,但对于 Person1,我得到“TypeError:‘instanceof’的右侧不可调用”

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);

如何使用对象字面量创建对象并仍然获得正确的 instanceof?

最佳答案

可以做到,但你真的不应该Symbol.hasInstance允许您重载 instanceof 的行为:

var Person1 = {
name: "John",
[Symbol.hasInstance](instance) {
return instance === this;
}
}

function Person2() {
this.name = "Jane";
}

var bob = Person1;
var bobby = new Person2();
console.log(bob instanceof Person1);
console.log(bobby instanceof Person2);

但是,您应该做的是:

function Person(name) {
this.name = name;
}

// confusing variable names if you ask me
var bob = new Person('John');
var bobby = new Person('Jane');

console.log(bob instanceof Person);
console.log(bobby instanceof Person);

关于javascript - 检查以不同方式声明的对象的 instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48934560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com