JavaScript - 不做我期望的实例

时间:2016-03-19 22:36:57

标签: javascript object constructor instanceof

如果我错了,请原谅我,但我认为这样做:

function MyObject()
{
    return {
        key: 'value',
        hello: function() { console.log('world'); }
    };
}

var obj = new MyObject();

我创建了 MyObject 类型的新实例。

但是,如果我这样做:

obj instanceof MyObject

返回 false 。这让我感到困惑,因为我认为这将会返回 true

我在这里做错了什么?

这是一个测试它的fiddle

我认为我是新的JavaScript基础知识,但也许不是。但是,我发现sources与我的发现相矛盾。

1 个答案:

答案 0 :(得分:9)

如果从构造函数显式返回一个对象(就像你在这里一样),那么你得到的是对象而不是构造函数的实例。

如果你想获得构造函数的实例,那么你会这样做:

function MyObject()
{
    this.key = 'value';
    this.hello = function() { console.log('world'); };
}

(尽管通常情况下,您希望将方法放在原型上,而不是每次构造新实例时都生成重复的方法)。