当函数返回某些内容时,new不起任何作用

时间:2013-09-14 06:41:23

标签: javascript

function f1(){
 console.log("inside f1");
 this.a = 2;
};
var x1 = f1();      => inside f1
x1;                 => undefined
var x1 = new f1();  => inside f1
x1;                 => f1 {a: 2}

当f1有返回值时,

function f2(){
 console.log("inside f2");
 this.b = 2;
 return { c :3 };
};

var x1 = f2();      => inside f2
x1;                 => Object {c: 3}

var x1 = new f2();  => inside f2
x1;                 => Object {c: 3}

在这种情况下如何访问b?

3 个答案:

答案 0 :(得分:4)

通过new调用构造函数将创建一个新对象,并且this关键字将被分配给这个新对象,最后它默认返回新对象。 但是,如果明确使用return,则可以覆盖此新对象。

答案 1 :(得分:0)

关键字“new”首先返回自定义对象。所以请尝试以下代码,PLZ ..

function f2(){
  console.log("inside f2");
  this.b = 2;
  return [ this, { c :3 }];
};
var x1 = new f2();

你可以像这样访问它..

x1[0].b

答案 2 :(得分:-2)

如果你正在使用jQuery,也许可以使用' $.extend()'添加返回的对象。

f2变为:

function f2(){
    this.b = 2;
    $.extend(this, { c: 3 });
};

然后:

new f2() => { b: 2, c: 3 }