Javascript通过prototype访问私有属性
这是一个相当愚蠢的例子,但它明确地描述了我经常遇到的问题。我有这样的构造函数:Javascript通过prototype访问私有属性,javascript,constructor,prototype,Javascript,Constructor,Prototype,这是一个相当愚蠢的例子,但它明确地描述了我经常遇到的问题。我有这样的构造函数: function Pagination() { var page = 1; } 然后我想给它的原型分配方法: (function () { this.page = function () { // Here goes code }; }).call(Pagination.prototype); 有什么办法可以得到那块私有财产吗。不,“私有属性”是通过功能范围实现的,并且无法改变功能范围的工
function Pagination() {
var page = 1;
}
然后我想给它的原型分配方法:
(function () {
this.page = function () {
// Here goes code
};
}).call(Pagination.prototype);
有什么办法可以得到那块私有财产吗。不,“私有属性”是通过功能范围实现的,并且无法改变功能范围的工作方式。仔细考虑一下,你是否真的需要这些财产是“私人”的,以及为什么。2.这是一个奇怪的向后弯曲的原型在那里。@deceze嗯,我认为最好将所有方法移到它的原型中,而不是将它们保留在构造函数中。但另一方面,我仍然需要封装。有什么建议吗?“私有”属性和原型在Javascript中根本不匹配。在这种情况下,我一直在重复的一件事是:你到底为什么“需要”这样的封装?@deceze我正在创建逻辑,它将在将来被重用几次,而且我不是唯一一个参与该项目的人。因此,我希望提供尽可能多的接口,使其能够按预期工作。通常,“我们都是同意在这里的成年人”的方法应该足够了,您可以命名您的私人财产
\u page
或类似的名称,并同意不触摸这些财产。也许更好:使用TypeScript并将它们标记为private
,这样tsc就会抛出错误。如果您需要变得如此防御性,以至于需要“实际上”使属性不可访问,那么您的起点就不好了。