Mootools存储方法:数据存储在哪里
Mootools store method: Where is the data stored?
我理解用元素存储一些数据的想法,但作为一名Javascript学习者,我很好奇使用这种方法存储的数据到底在哪里。
mootools的帮助页面非常简单,对我没有帮助。
有人能告诉我在哪里可以找到更全面的mootools帮助吗?
存储的实际工作方式很简单。
在定义方法的闭包中,每个元素都有一个专用{object}
作为字典。该闭包中的任何方法都可以访问存储对象,但不能直接从外部进行穿刺。
在工作代码中:
(function(){
// private shared object
var Storage = {};
/**
* @param {string} key
* @param {*} value
* @return {HTMLElement}
*/
Element.implement('write', function(key, value){
// Slick can get a unique id for every element. this is key in storage
var uid = Slick.uidOf(this),
s = Storage[uid] || (Storage[uid] = {});
return (s[key] = value), this;
});
/**
* @param {string} key
* @param {*=} initial value, optional
* @return {*}
*/
Element.implement('read', function(key, initial){
var uid = Slick.uidOf(this),
s = Storage[uid] || (Storage[uid] = {}),
undef = 'undefined';
typeof initial !== undef && typeof s[key] === undef && (s[key] = initial);
return s[key];
});
}());
var foo = document.id('foo');
foo.write('hello', 'there'); // save
console.log(foo.read('hello')); // read
console.log(foo.read('foo', 'bar')); // via initial value api, bar.
这几乎是完整的读/写api——唯一缺少的是.eliminate
功能——请记住,它比实际代码稍微更具防御性,实际代码是在考虑perf的情况下编写的,所以它不会进行太多类型检查。
http://jsfiddle.net/aj0pccew/2/
更多信息:
- http://mootools.net/docs/core/Element/Element#Element:retrieve
- https://github.com/mootools/mootools-core/blob/master/Source/Element/Element.js#L1003-2019年1月
至于为什么它是这样,而不是在元素上作为属性,它更快:只需要在元素本身(uid
)上有一个属性,不需要对读/写内容进行DOM访问,避免通过元素和循环引用进行泄漏。它还可以通过删除以前在没有destroy
API的情况下存储数据的元素来创建泄漏。
相关文章:
- Ember.js-接口状态应该存储在哪里
- 在哪里存储HTML模板以在Backbone.js中使用
- 我应该在哪里用javascript存储我的窗口维度
- 在哪里存储值以从角度模板获取它们
- ServiceWorker数据存储在哪里
- 我应该将html元素的jQuery数据存储在哪里
- ngView 中指令使用的远程数据存储在哪里?(AngularJS)
- rails_admin的 css 和 javascript 文件存储在哪里
- 混合移动应用中的数据存储在哪里
- window.somedata存储在哪里
- Ajax和后退按钮.哈希更改,但上一页的状态存储在哪里
- Mootools存储方法:数据存储在哪里
- JavaScript变量存储在哪里?
- 打开Annotator(注释存储在哪里?)
- 在Angular.js中,模型状态应该存储在哪里?
- javascript的localstorage字符串存储在哪里?
- attachEvent或addEventListener-存储在哪里
- mac上office word插件的cookie存储在哪里?
- rootScope 值存储在哪里?在饼干或本地存储中
- Blob 二进制数据存储在哪里