JavaScript - 不做我期望的实例

Boo*_*oom 5 javascript constructor object instanceof

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

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

var obj = new MyObject();
Run Code Online (Sandbox Code Playgroud)

我创建了一个MyObject类型的新实例.

但是,如果我这样做:

obj instanceof MyObject
Run Code Online (Sandbox Code Playgroud)

它返回false.这让我感到困惑,因为我认为这会回归真实.

我在这做错了什么?

这是一个测试这个的小提琴.

我认为我是新的JavaScript基础知识,但也许不是.但是,我发现的消息来源与我的发现相矛盾.

Que*_*tin 9

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

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

function MyObject()
{
    this.key = 'value';
    this.hello = function() { console.log('world'); };
}
Run Code Online (Sandbox Code Playgroud)

(虽然,通常,您希望在每次构造新实例时将方法放在原型上而不是生成它们的副本).