阅读了一些关于 Javascript 的内容后原型继承模型,我改变了构建类的风格
var Some_Class = function() {
this.public_method = function() {
};
(function() {
// constructor
}).call(this)
}
to
var Some_Class = function() {
(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
};
虽然我知道这是一个很好的做法,但我不再允许从公共方法访问私有方法
var Some_Class = function() {
var private_member = 'whatever';
(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
return private_member; // not possible
};
读完一篇文章后here(闭包创建的构造函数),然后我想出了这个
var Some_Class = function() {
var private_member = 'whatever',
private_method = function(_some_value) {
// private method implementation
};
if(!arguments.callee.prototype.public_method) {
arguments.callee.prototype.public_method = function() {
private_method.call(this, private_method);
};
}
(function() {
// constructor
}).call(this)
}
然而,这样做有什么缺点呢?或者如果我想访问有更好的方法吗私人会员在公共方法中?
我的答案是否定的:没有内置的private
在 JavaScript 中访问但这没关系,因为YAGNI。这是我的制作方法private
我的代码中的成员:
function Some_Class() {
this._private_member = 'whatever';
}
Some_Class.prototype._private_method = function() {
};
这就足够了。当唯一的真正目的是跳过障碍时,真的不值得private
是保护自己免受……自己的伤害。
(我说这是我自己花了很多时间玩弄闭包和原型设计的每一种排列,就像你一样,最后说“管它,这不值得”。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)