1
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 にアクセスしますか?

4

3 に答える 3

4

new でコンストラクターを呼び出すと、新しいオブジェクトが作成thisされ、この新しいオブジェクトにキーワードが割り当てられ、最後にデフォルトで新しいオブジェクトが返されます。ただし、return を明示的に使用すると、この新しいオブジェクトをオーバーライドできます。

于 2013-09-14T06:48:38.770 に答える
0

キーワード「new」は、最初にカスタム オブジェクトを返します。次のコードを試してください。

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

こんな感じでアクセスできます。

x1[0].b
于 2013-12-29T16:48:17.493 に答える