JavaScript中的原型/类/公共属性

我有一个模型的构造函数(类似于Backbone模型),它使用一个传递给模型工厂的商店实例(例如MongoDB / Redis)。 现在在模型的构造函数里面,我做了

this.store = options.store; 

当我使用var model = new Model()构造一个实例时,Store现在可以用作this.store

然后我遇到了一个情况,当我的模型有“公共”的方法,例如Model.find()这将工作,没有实例化模型。 但是现在因为没有实例化,Model内部的函数this.store访问store。

我所做的是,我开始也增加了存储到构造函数本身Model.store = options.store修复问题。 但是现在商店暴露给任何使用Model构造函数的东西,这是不可取的。

我猜我正在做错事。 所以我会感谢一些帮助。

如果我得到你说的正确,那么我想你想要的是允许在Model上的“静态” find()方法而不暴露storevariables。 Javascript并没有真正的私有空间,但是你可以使用闭包获得你想要的东西。 这是一个小提琴:

http://jsfiddle.net/52FPy/

编辑:更新小提琴来演示各种方式来暴露/隐藏信息使用闭包: http : //jsfiddle.net/52FPy/2/

简述:

 var Model = function(){ var store = 'this is a store'; var Model = function(){ } Model.find = function(){ return store; } return Model; }() 

这将以您想要的方式“隐藏” storevariables。