JS中的新关键字

时间:2019-02-17 18:48:31

标签: javascript

我一直在寻找JS中的new关键字。 我了解这意味着this关键字现在已在对象中创建。 我不明白的一件事是testNew函数baz内部是如何未定义的。

function testNew()
{
    this.baz = "baz";
    console.log(this.bar + " "  + baz);
    console.log(this.baz);
}

var bar = "bar";
var baz = new testNew();
console.log(baz);

因为现在将它附加到新对象上,this.baz和baz会不是同一引用?

3 个答案:

答案 0 :(得分:2)

让我们看看这一行

var baz = new testNew();

这里发生的是:

  1. baz变量的值未定义
  2. testNew函数被调用,其中的this是一个新对象,但是baz仍未定义
  3. testNew完成并返回新创建的对象,然后将其分配给baz

答案 1 :(得分:1)

function testNew()
{
    this.baz = "baz";
    console.log("this.bar + \" \"  + baz: ", this.bar + " " + baz); // this fails
    console.log("this.baz: ", this.baz);
}

var bar = "bar";
var baz = new testNew();
console.log("baz: ", baz);

您正在尝试访问this.bar,它在testNew()函数中不存在。您在全局名称空间上定义了bar,可以使用bar进行调用。
另外,由于要引用当前正在用testNew()函数初始化的全局baz,因此在尝试调用baz时未定义

答案 2 :(得分:1)

您正在使用此代码访问局部变量...“” + baz,没有定义局部变量'baz'。

应该是

this.bar + " " + this.baz
                 ^^^