有这样的调用关系,这是使用的代码
$('#btn').staFilter({
selectEvent : function( startDate, endDate ){
sDate = startDate;
eDate = endDate;
},
initEvent : function( startDate, endDate) {
sDate = startDate;
eDate = endDate;
},
startDate : startDateValue, // 开始日期
endDate : endDateValue, // 结束日起 */
filterData :filterData,
basePath : '${basePath}'
});
下面是要引用的代码
!function($){
var StaFilter = function(ele, opt){
this.$element = ele,
this.defaults = {
startDate: '', // 开始日期
endDate: '', // 结束日期
filterData:'',
selectEvent: function(startDate, endDate){
},
initEvent: function(startDate, endDate){
},
basePath:'',
offsetLeft: 0,
offsetTop: 0,
marginAction: 'left-bottom'
},
this.options = $.extend({}, this.defaults, opt);
this.showFlag = false; // 默认隐藏状态
this.init();
}
StaFilter.prototype={
init:function(){
console.log(this.options.basePath);
}
}
$.fn.staFilter = function(options){
var dateBox = new StaFilter(this, options);
return dateBox;
}
$.fn.staFilter.Constructor = StaFilter;
}(jQuery);
注意这里有一句this.options = $.extend({}, this.defaults, opt);
在下面的init方法的打印中,我们可以拿到basePath,但在this.default中我们并没有赋值。我对这一点感到奇怪,请教了同事是什么原理。
同事跟我说这是一个赋值的过程,opt的值赋给了defaults,在引用的时候options已经有了defaults和opt的所有属性。
我这样理解记忆,如果有错麻烦指正谢谢。