Jul
01
- 原文:Create Advanced Web Applications With Object-Oriented Techniques
- 译文(因文章较长,分多篇贴出,此篇为第6部分):
模拟私有属性
好的,让我们看看闭包是怎么帮助我们模拟私有成员的吧。通常来说,一个函数内部的本地变量在外部是无法访问的。一旦函数创建,其内部所有的本地变量就消失了。但是,当其本地变量被闭包捕获后,它又复活了。这就是在JavaScript中模拟私有属性的关键之处。请看下面的Person类:
function Person(name, age) {
this.getName = function() { return name; };
this.setName = function(newName) { name = newName; };
this.getAge = function() { return age; };
this.setAge = function(newAge) { age = newAge; };
}
参数name和age对于Person构造函数来说属于本地变量。当Person返回时,假定参数name和age已经消失了,但当他们被4个内部函数捕获后,就复活回来了。而这4个内部函数是作为Person对象的方法而存在的,而name和age就严格地通过这4个方法来访问。所有你可以这样做:


