原型结构中的变量是否可以在所有实例中具有相同的值?在我的情况下,我需要加载Google API,但我想确保脚本只加载一次。
SharedVariable.prototype.createCache = function ( key, requestFunction, callback ) {
// <-- this.cache should be a variable shared across all instances
if ( !this.cache[ key ] ) {
this.cache[ key ] = $.Deferred( function( defer ) {
requestFunction( defer );
}).promise();
}
return this.cache[ key ].done( callback );
}
createCache
有三个参数:
key
基本上是脚本的src requestFunction
是一个每key
只调用一次的函数。 callback
是一个多次调用的函数此功能仅在this.cache
为&#34;全球&#34;变量,在所有实例中应具有相同的值。目前,每个实例的值都不同,这就是代码无法正常工作的原因。原型可以这样吗?
答案 0 :(得分:2)
制作原型的cache
属性部分:
SharedVariable.prototype.cache = {};
现在SharedVariable
的所有实例都引用相同的缓存对象。
根据您的JSFiddle编辑
您在JavaScript中将cache
创建为数组,但您似乎正在设置字符串键值。你在JavaScript中滥用数组,因为它们应该是从零开始的整数索引键。相反,如上所述,使用花括号创建一个空对象。
更新了小提琴:http://jsfiddle.net/BrQkP/2/