尝试使用以下代码中的属性权重在JS中创建一个类:
function Foo() {
var weight = 10;
console.log(weight);
}
当我使用var bar = new Foo();
实例化时,10
会被记录到控制台。
当我稍后调用console.log(bar.weight);
时,undefined
将被记录到控制台。这是为什么?我的印象是JS类中声明的属性默认是公共的?
答案 0 :(得分:6)
那是因为您还没有将weight
设置为bar
的属性;它只是在构造函数调用时创建的局部变量(这与其他语言不同,例如Java)。要将其创建为属性,您需要使用关键字this
:
function Foo() {
this.weight = 10;
}
这会将weight
设置为Foo
个对象的属性,包括bar
,因此您应该可以毫无问题地使用console.log(bar.weight)
。
function Foo() {
this.weight = 10;
}
var bar = new Foo();
document.body.innerHTML = "<code>bar</code>'s weight property is equal to " + bar.weight + ".";
&#13;
答案 1 :(得分:3)
因为重量不是食物的属性而是局部变量,所以改变
var weight = 10;
到
this.weight = 10;