Javascript 为什么组合构造函数/原型模式返回being对象的类型?

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

我很难理解为什么typeof在使用此构造函数/原型模式时不在MyObject的实例上返回MyObject-在MyObject的原型将其构造函数设置为MyObject后,它在new使用MyObject构造函数创建的实例上返回object-有人能解释为什么吗

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]]链上。