在四处寻找模拟其他语言的私有方法时,通常建议 Crockford 的页面提出这种“priveleged”方法:
function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var that = this;
this.service = function () {
return dec() ? that.member : null;
};
}
privelegedservice
也是如此——它可以访问私有方法(如dec
)和私有变量(如secret
)。我认为它也可以调用“公共”方法(那些分配给Container.prototype
)。
但是,不是为 ?service
的每个对象重新创建new Container
?不是需要额外的时间并消耗额外的内存吗?dec
就此而言,私人也是如此。
我知道推荐的 JS 方法来制作方法是KlassFunction.prototype
为了避免这个性能问题。但是非公共方法可以这样创建吗?