您好,匿名用户
随意问技术百科期待您的加入

在Javascript中,访问私有成员的成员方法是否可以写在类的原型中?

0 投票

譬如我有一个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变成了静态私有变量而不是成员私有变量。
虽然可以创建静态字典,但是代码的可读性会降低。
有没有其它的解决方法?

用户头像 提问 2014年 1月27日 @ Gemini 上等兵 (319 威望)
分享到:

1个回答

0 投票

一般采用约定,js不适合做这种强制限制,对性能和可读性都有影响。

通用约定,一般是第一个字符是下划线的是私有方法和私有变量,外部不能调用。当然只是约定。。。。

前端在实施的过程中,约定和规范很重要,比任何语言都重要。
一般一个团队一开始,做的第一项工作就是规范制定,之后就要遵循这些约定,否则很容易把前端代码写乱。
既然系统不给我们太多限制,我们就需要自己来限制自己。

用户头像 回复 2014年 1月27日 @ Mordekaiser 上等兵 (232 威望)
提一个问题:

相关问题

0 投票
1 回复 34 阅读
0 投票
1 回复 43 阅读
0 投票
1 回复 29 阅读
0 投票
1 回复 35 阅读
0 投票
1 回复 50 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...