譬如我有一个Person类,拥有name这一私有属性。
// Javascript code:
function Person(theName) {
var name = theName; // 对象的私有成员
this.getName = function () { // 访问私有成员的成员方法写在对象中是没有问题的。
return name;
};
}
Person.prototype.setName = function (newName) {
// 访问私有成员的成员方法是否可以写在类的原型中?
};
是不是需要访问到私有成员的成员方法都不能写在原型里?
但是这样又会造成资源的浪费,有没有两全其美的方法?
后来试过了做类构造的闭包,写成了这样:
// Javascript code:
var Person = (function () {
var name;
var P = function (theName) {
name = theName;
this.getName = function () {
return name;
};
};
P.prototype.setName = function (newName) {
name = newName;
};
return P;
}());
很显然name变成了静态私有变量而不是成员私有变量。
虽然可以创建静态字典,但是代码的可读性会降低。
有没有其它的解决方法?