当使用 mới
调用下面的 foo
函数时,它会变成一个构造函数,返回分配给 baz
的对象。
function foo() {
this.baz = "baz";
console.log(`${this.bar} ${baz}`);
}
var bar = "bar";
var baz = new foo(); // prints undefined undefined
问题是为什么控制台语句中的 baz
会得到 không xác định
值 - 可以说,当 baz
被提升时,当new foo() 被调用,直到函数返回,baz
没有分配返回的对象?
后面一行中的
console.log(baz)
正确打印返回的对象。
在函数中,cái này
中没有bar
。您需要删除 this.bar
của cái này
部分。对于baz
,您必须使用this.baz
,因为它附加到对象实例。
function foo() {
this.baz = "baz";
console.log(`${bar} ${this.baz}`);
}
var bar = "bar";
var baz = new foo();
这段代码的意思
this.baz = "baz";
console.log(`${this.bar} ${baz}`);
当你创建一个对象时,它只会有baz
在其中。在正文中,如果您想访问对象的属性,则需要通过 cái này
访问。 ${baz}
未定义,因为没有 baz
变量(它不会在 cái này
中查找)。因此,如果您需要访问函数中的baz
需要使用this.baz
.
那${this.bar}
呢,cái này
中没有bar
属性,只有baz
>.
Tôi là một lập trình viên xuất sắc, rất giỏi!