在Javascript中,访问私有成员的成员方法是否可以写在类的原型中?
譬如我有一个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变成了静态私有变量而不是成员私有变量。
虽然可以创建静态字典,但是代码的可读性会降低。
有没有其它的解决方法?
Musroom
11 years, 6 months ago