【发布时间】:2016-11-05 01:39:43
【问题描述】:
有人能告诉我为什么这个打印“未定义”吗?
function Person(first,last,age) {
this.firstname = first;
this.lastname = last;
this.age = age;
var bankBalance = 7500;
}
// create your Person
var john = new Person ('John','Doe',33);
// try to print his bankBalance
document.write (john.bankBalance);
在最后一行我想打印 john.bankBalance 是 7500。
【问题讨论】:
-
因为
john没有bankBalance属性。构造函数Person中的变量bankBalance在它之外不可用(因为JavaScript 的作用域规则。)另外,JS 没有对私有属性的语言支持;不过,可以使用闭包来模拟它们。 -
初学者要记住的一点是,JS 中没有“类”。相反,JS 使用原型。当您执行
var bankBalance时,它不像Java 那样声明成员属性,它只定义了一个局部变量。要添加属性,您必须实际更改实例的属性 (this.bankBalance),或通过原型 (Person.prototype.bankBalance = 7500) 进行更改。 -
谢谢大家。现在我知道了一点 Js 是如何工作的
标签: javascript oop private