Javascript:使用“引用变量”;“模块模式”;,有什么想法吗?
好的,我有一个叫做“选择器模块”的模块。在其中,我有一个对象文本,它将包含应用程序中在各种用户交互期间使用的所有jQuery选择器(见下文) 为了避免每次使用选择器时重复相同的$(选择器)代码,我认为将所有共享选择器元素放置到其自己的“SelectorModule”中会更有效。这样,如果需要进行任何更改,只需在一个地方进行修改,所有内容都仍然可以工作。然后还可以从单个位置调用每个选择器,例如“SelectorModule.getSelectors.selectorTwo”Javascript:使用“引用变量”;“模块模式”;,有什么想法吗?,javascript,oop,Javascript,Oop,好的,我有一个叫做“选择器模块”的模块。在其中,我有一个对象文本,它将包含应用程序中在各种用户交互期间使用的所有jQuery选择器(见下文) 为了避免每次使用选择器时重复相同的$(选择器)代码,我认为将所有共享选择器元素放置到其自己的“SelectorModule”中会更有效。这样,如果需要进行任何更改,只需在一个地方进行修改,所有内容都仍然可以工作。然后还可以从单个位置调用每个选择器,例如“SelectorModule.getSelectors.selectorTwo” var Selecto
var SelectorsModule = SelectorsModule || {};
SelectorsModule = (function(){
// Private methods and variables
var sharedSelectors = {
selectorOne: $("#element-one"),
selectorTwo: $("#element-two"),
selectorThree: $("#element-three"),
selectorFour: $("#element-four")
};
// Public methods and variables
return{
getSelectors: function(){
return sharedSelectors;
}
};
})();
我的问题是:
SelectorsModule.getSelectors.selectorsone
(为了获得jQuery选择器对象),我只是引用脚本第一次运行时创建的SelectorsModule
的单个实例,还是每次都在幕后创建一个新的SelectorsModule
对象?后者显然会表现得更糟,只是需要一些澄清,真的吗 SelectorsModule.getSelectors().selectorOne // note the parentheses for invocation
您正在访问代码首次运行时创建的同一个单例对象
(2) 我想说这没关系,但我有两个顾虑:
(a) 这些选择器是否属于一个单独的对象,或者某些选择器适用于某些对象/行为片段,而其他选择器适用于其他区域?这纯粹是观点,但它们可能更好地封装在作用于它们的对象中
(b) 请记住,在实例化SelectorModule时,每个选择器只调用一次jQuery函数。这意味着,如果要在实例化模块后修改DOM,任何更改都不会反映在模块属性返回的jQuery对象中
最后,作为旁注,在属性名称中使用术语“选择器”会有点混乱(尽管我怀疑这只是出于问题的目的)。传递给jQuery函数的字符串是“选择器”,但属性本身都包含“jQuery对象”,严格来说不是选择器。谢谢!这就是我需要知道的一切:-)