我一直在寻找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会不是同一引用?
答案 0 :(得分:2)
让我们看看这一行
var baz = new testNew();
这里发生的是:
baz
变量的值未定义testNew
函数被调用,其中的this
是一个新对象,但是baz
仍未定义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
^^^