gpt4 book ai didi

javascript - 用 JavaScript 理解 instanceof

转载 作者:行者123 更新时间:2023-11-30 08:09:12 25 4
gpt4 key购买 nike

我对 JavaScript 中的 instanceof 有基本的了解,测试左侧对象是否“属于”右侧对象类型。以下 2 个示例帮助我理解......

var demo1 = function() {};
demo1.prototype = {
foo: "hello"
};

var demo2 = function() {
var pub = {
bar:"world"
};
return this.pub;
};

var obj1 = new demo1();
var obj2 = new demo2();

console.log(obj1 instanceof demo1); //returns true
console.log(obj2 instanceof demo2); //returns true

但是在第三个例子中,我得到了错误的结果,我不明白为什么......

var o = {}; // new Object;
o.toString(); // [object Object]
console.log(o instanceof toString); //returns false

感谢您帮助理解发生了什么。另外...是否有可能使第 3 个示例为真?

再次感谢

最佳答案

toString 不会导致 o 的类型更改。它只是返回对象的字符串表示,而不改变它。所以,o 仍然是一个简单的对象,没有 instanceof String

var o = {}; // new Object object
var ostring = o.toString(); // "[object Object]"
typeof o; // object
typeof ostring; // string - this is a primitive value, not an object; so that
ostring instanceof String; // is false
var stringobj = new String(ostring); // new String object
typeof stringobj; // object
stringobj instanceof String; // true!
o instanceof Object; // also true!

另见 MDN reference for the String constructor .

关于javascript - 用 JavaScript 理解 instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897316/

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