如果我错了,请原谅我,但我认为这样做:
function MyObject()
{
return {
key: 'value',
hello: function() { console.log('world'); }
};
}
var obj = new MyObject();
我创建了 MyObject 类型的新实例。
但是,如果我这样做:
obj instanceof MyObject
返回 false 。这让我感到困惑,因为我认为这将会返回 true 。
我在这里做错了什么?
这是一个测试它的fiddle。
我认为我是新的JavaScript基础知识,但也许不是。但是,我发现sources与我的发现相矛盾。
答案 0 :(得分:9)
如果从构造函数显式返回一个对象(就像你在这里一样),那么你得到的是对象而不是构造函数的实例。
如果你想获得构造函数的实例,那么你会这样做:
function MyObject()
{
this.key = 'value';
this.hello = function() { console.log('world'); };
}
(尽管通常情况下,您希望将方法放在原型上,而不是每次构造新实例时都生成重复的方法)。