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'); };
}
(虽然,一般来说,您希望将方法放在原型上,而不是每次构造新实例时都生成它们的副本)。
如果我错了,请原谅我,但我认为这样做:
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'); };
}
(虽然,一般来说,您希望将方法放在原型上,而不是每次构造新实例时都生成它们的副本)。