JavaScript - instanceof 没有按照我的预期进行

JavaScript - instanceof not doing what I expect

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

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

var obj = new MyObject();

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

但是,如果我这样做:

obj instanceof MyObject

它returns false。这让我感到困惑,因为我认为这会 return true.

我做错了什么?

这是测试这个的 fiddle

我以为我掌握了 JavaScript 的基础知识,但也许不是。但是,我发现 sources 与我的发现相矛盾。

如果您显式 return 来自构造函数的对象(就像您在此处所做的那样),那么您将获得该对象而不是构造函数的实例。

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

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

(虽然,一般来说,您希望将方法放在原型上,而不是每次构造新实例时都生成它们的副本)。