【发布时间】:2012-11-05 01:24:28
【问题描述】:
我对 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
感谢您在了解发生了什么方面提供的任何帮助。还有……可以让第三个例子成立吗?
再次感谢
【问题讨论】:
-
你的
demo2函数搞砸了。没有this.pub,所以它将返回undefined,当使用new运算符调用时,这将导致一个空对象(至少是instanceof demo2) -
它对我来说返回 true,我使用的是基于 T.J. 的示例。克劳福德的博客在这里 - blog.niftysnippets.org/2010/03/anonymouses-anonymous.html
-
是的,
obj2 instanceof demo2对我来说也是true。尽管如此,您的构造函数还是没用的,可以用空函数替换。我看不出你是如何从那篇非常好的文章中的任何例子中得出的。 -
Bergi 我没有发布示例 2 作为模式的最佳实践,我知道这一点。它基于对该文章的博客评论的回复。就这样。我计划使用标准模式来实现我的目标。感谢您对远离上述风格的严厉批评。是的,这是一篇很棒的文章。
标签: javascript instanceof