为了账号安全,请及时绑定邮箱和手机立即绑定

构造函数返回什么?

构造函数返回什么?

猛跑小猪 2019-10-21 09:26:34
如果我在构造函数中返回一些值或对象,那么var会得到什么?function MyConstroctor(){    //what in case when return 5;    //what in case when return someObject;}var n = new MyConstroctor();在两种情况下都会得到什么n?实际上,这是一个测验问题,答案是什么?自定义对象构造函数返回什么?a)新实例化的对象b)未定义-构造函数不返回值c)不管return语句是什么d)不管return语句是什么; 新实例化的对象(如果没有return语句)
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我发现了这个很棒的链接:


JavaScript:构造函数返回值


上面提到的第二个魔术是构造函数返回特定的,可能预先存在的对象而不是对新实例的引用的能力。如果需要,这将允许您自己管理实际实例的数量;可能是由于资源有限等原因。


var g_deebee = new Deebee();

function Deebee() { return g_deebee; }

var db1 = new Deebee();

var db2 = new Deebee();

if (db1 != db2)

  throw Error("JS constructor returned wrong object!");


查看完整回答
反对 回复 2019-10-21
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

简短答案

构造函数返回  this对象。


function Car(){

   this.num_wheels = 4;

}


// car = {num_wheels:4};

var car = new Car();

长答案

根据Javascript规范,当使用调用函数时new,Javascript创建一个新对象,然后将该对象的“ constructor”属性设置为所调用的函数,最后将该对象分配给name this。然后,您可以访问this该函数主体的对象。


一旦函数体被执行,Javascript将返回:


ANY对象,如果函数手动返回一个:


function Car(){

  this.num_wheels = 4;

  return {num_wheels:37};

}


var car = new Car();

alert(car.num_wheels); // 37!

的this对象,如果函数没有return声明,或如果函数返回比其他类型的值object


function Car() {

  this.num_wheels = 4;

  return 'VROOM';

}


var car = new Car();

alert(car.num_wheels) // 4

alert(Car()); // No 'new', so this alerts 'VROOM'


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 627 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信