【发布时间】:2009-06-25 03:13:43
【问题描述】:
在阅读了一些关于 Javascript 的 prototypical inheritance model 之后,我改变了构建类的风格
var Some_Class = function() {
this.public_method = function() {
};
(function() {
// constructor
}).call(this)
}
到
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 member,有没有更好的方法?
【问题讨论】:
标签: javascript prototype