尝试使用以下代码中的属性权重在JS中创建一个类:
function Foo() {
var weight = 10;
console.log(weight);
}
Run Code Online (Sandbox Code Playgroud)
当我实例化它时var bar = new Foo();,10会记录到控制台.
当我稍后调用时console.log(bar.weight);,undefined会记录到控制台.这是为什么?我的印象是,JS类中声明的属性默认是公共的?
那是因为你实际上没有设置weight为bar; 它只是在构造函数调用时创建的局部变量(这与其他语言不同,例如Java).要将其创建为属性,您需要使用以下关键字this:
function Foo() {
this.weight = 10;
}
Run Code Online (Sandbox Code Playgroud)
这设置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 + ".";Run Code Online (Sandbox Code Playgroud)