(function($){
var defaults = {
name : 'benjamin'
};
function EasyZoom(target, options) {
this.$target = $(target);
this.opts = $.extend({}, defaults, options, this.$target.data()); //why extend this.$target.data()?
this._init();
}
EasyZoom.prototype._init = function() {
this.printout();
};
EasyZoom.prototype.printout = function(){
console.log(this.opts);
};
$.fn.easyZoom = function(options){
$.data(this, 'easyZoom', new EasyZoom(this, options)); //isn't $.data(name, value) only?, why $.data(this, 'name', object)?
};
})(jQuery);
$(document).ready(function(e) {
$('div').easyZoom({name: 'benny'});
});
我是创建jQuery插件的新手,我尝试学习easyZoom插件的风格。但是我得到的一些问题我不明白
$.data();
数据参数应为name & value
,为什么在easyZoom插件中使用this, name, object
$.extend();
为什么将$target.data();
对象扩展为默认值?
为什么要在数据中存储新对象?为什么不只是var foo = new EasyZoom(this, options);
答案 0 :(得分:1)
首先,它是$.data(elem, key, value)
,但不是$.data(name, value)
。
其次,$.extend()
喜欢合并。
例如,
$.extend({}, {'foo': '1'}, {'hoge': '2'}) => {'foo': '1', 'hoge': '2'}
您可以查看jQuery的文档。