Javascript 为什么组合构造函数/原型模式返回being对象的类型?
我很难理解为什么typeof在使用此构造函数/原型模式时不在MyObject的实例上返回MyObject-在MyObject的原型将其构造函数设置为MyObject后,它在new使用MyObject构造函数创建的实例上返回object-有人能解释为什么吗Javascript 为什么组合构造函数/原型模式返回being对象的类型?,javascript,object,prototype-programming,Javascript,Object,Prototype Programming,我很难理解为什么typeof在使用此构造函数/原型模式时不在MyObject的实例上返回MyObject-在MyObject的原型将其构造函数设置为MyObject后,它在new使用MyObject构造函数创建的实例上返回object-有人能解释为什么吗 function MyObject(foo, bar) { this.foo = foo; this.bar = bar; } MyObject.prototype = { constructor: MyObject, som
function MyObject(foo, bar) {
this.foo = foo;
this.bar = bar;
}
MyObject.prototype = {
constructor: MyObject,
someFunc: function() {
console.log(foo + " and " + bar);
}
}
var newObject = new MyObject("a", "b");
typeof newObject;
typeof
仅返回“object”,请参见
您可能想要的是:
typeof
仅返回“object”,请参见
您可能想要的是:
如果要检查:
MyObject的新对象实例代码>(返回true)
有关typeof为何会出现这种行为的更多信息:如果要检查:MyObject的新对象实例,请使用instanceof
运算符代码>(返回true)
关于为什么typeof的行为是这样的更多信息:您如何解释typeof
返回function
的函数
实例?呃,我是否混淆了使用instanceof和typeof?函数也是对象,但是特殊的函数对象。这里有更多:(抱歉只是发布链接,今晚有点懒)@Andreas Jansson,很明显。我只是指出不一致之处<例如,code>typeof[]
将返回object
,而不是array
。@katspaugh-这就是typeof被指定为行为的方式。它将为实现内部[[call]]方法的任何本机对象返回函数。您如何解释函数
实例的类型
返回函数
?呃,我是否混淆了使用instanceof和typeof?函数也是对象,但是特殊的函数对象。这里有更多:(抱歉只是发布链接,今晚有点懒)@Andreas Jansson,很明显。我只是指出不一致之处<例如,code>typeof[]
将返回object
,而不是array
。@katspaugh-这就是typeof被指定为行为的方式。它将为实现内部[[call]]方法的任何本机对象返回函数。请注意,除非您知道对象是如何构造的,否则instanceOf的信息量不大。它只是检查MyObject.prototype是否在newObject的[[prototype]]链上。注意,除非您知道对象是如何构造的,否则instanceOf的信息量不大。它只是检查MyObject.prototype是否位于newObject的[[prototype]]链上。