【问题标题】:In javascript, does the new operator always return an object of same type which is mentioned in the new statement? [duplicate]在 javascript 中,new 运算符是否总是返回 new 语句中提到的相同类型的对象? [复制]
【发布时间】:2016-03-05 02:26:24
【问题描述】:

鉴于此代码:

function foo(){ 
   return foo; 
}
var bar = new foo();

console.log(bar instanceof foo);

我希望输出为“真”。但是,它是“假的”。

为什么 bar 对象不是 foo 类型的?

另一方面,如果我只是从 foo 返回一个数字(比如 2),我得到的输出为真。

【问题讨论】:

标签: javascript new-operator instanceof


【解决方案1】:

当你从构造函数返回一个基元(比如 2)时,返回值会被忽略。而是返回由new 创建的对象,就像构造函数没有返回语句一样。如果您从构造函数返回一个对象,则无论该对象是否将构造函数作为其内部原型,都会返回该对象(注意:函数是 Javascript 中的对象)。

在您的情况下,您正在返回一个函数;该函数是 foo,但它不是 foo 的实例。

See new operator

【讨论】:

  • 如果你在return this;foo() 就会变成真的
  • 如果有人可以编辑其中的链接,我将不胜感激。我显然忘记了如何手动操作,而且我在移动设备上;)
猜你喜欢
  • 1970-01-01
  • 2012-03-17
  • 2011-03-24
  • 1970-01-01
  • 2011-02-11
  • 2011-10-08
相关资源
最近更新 更多