javascript - 向对象添加属性,定义它并立即记录它将返回undefined

javascript - 向对象添加属性,定义它并立即记录它将返回undefined,第1张

为什么立即向对象调用新添加的属性返回“undefined”?完成编译和运行过程会很棒。示例第3行console.log:

function foo(baz) {
    this.baz = "baz";
    console.log(baz); //why does this print undefined?
}

var baz = new foo();

最佳答案:

1 个答案:

答案 0 :(得分:2)

因为您需要使用this.baz来访问之前添加的变量。

this内的

foo()指的是foo函数。但是,当您记录baz时,它将在window(全局)对象上进行搜索,因为它未在foo()中定义。

所以,你的陈述如下:

console.log(window.baz);

由于未定义baz,因此它会记录undefined

<强>演示

&#13; &#13;
function foo() {
  this.baz = "baz";
  alert(this.baz);
}

var baz = new foo();
&#13; &#13; &#13;

全球演示baz

&#13; &#13;
var baz = 'foo';

function foo() {
  console.log(this);
  this.baz = "baz";
  alert(baz);
  // Same as alert(window.baz);
}

var baz = new foo();
&#13; &#13; &#13;

更新了问题:

  

抱歉,我忘了添加参数。我编辑了这个问题 - 纳兹克

function foo(baz) {
    this.baz = "baz";
    console.log(baz); //why does this print undefined?
}

var baz = new foo();

由于您在使用foo()创建新对象时未将任何参数传递给new,因此baz中的undefinedfoo() }。

<强>演示

&#13; &#13;
function foo(baz) {
  this.baz = baz;
  alert(baz);
}

var baz = new foo('Magic!');
&#13; &#13; &#13;

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复