我正在关注Crockford 的 Javascript 中私有方法指南,但我正在努力解决一些问题。我正在尝试优化此代码
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;
};
}
通过在构造函数之外定义函数,以便每次创建新实例时都不会创建新的函数对象。
我仍然不知道如何为那些他称为私有方法的人执行此操作(非常感谢任何帮助)。对于那些他称之为特权方法的人,这就是我想要做的:
function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var that = this;
}
Container.prototype.service = function() {
return dec() ? that.member : null;
};
但如果我像这样测试它
d1 = new Container("content");
d1.service();
我收到此错误:
ReferenceError: dec is not defined
这是否意味着无法利用 Crockford 使用的私有/特权方法的优势并通过将类的所有实例链接到同一个函数对象来优化内存使用?我希望你能证明我是错的。