使用的jquery框架function Calendar() {
this.setLocale = function(locale){};
}
$.extend(Calendar.prototype, {
setLocale : function(locale){}
});这两个setLocale的定义有什么区别吗?
this.setLocale = function(locale){};
}
$.extend(Calendar.prototype, {
setLocale : function(locale){}
});这两个setLocale的定义有什么区别吗?
甚至可以不用jquey,直接.prototype扩展要说区别的话,在于第一个function定义时, 已经确定了此方法在其中, 而extend是后面临时加入, 可以参照继承来思考这个问题.$.extend的主要用途是用于给jquery对象进行扩展, 对进行对象的方法扩展非常有效.
上面的那个.setLocale是它本身的,
========>>>>>>>>>>>不知道这样说对不对.
楼下的.接着....
var cal1 = new Calendar();
var cal2 = new Calendar();
//下面对 cal1 的 setLocale() 重新定义
cal1.setLocale = function() {alert('cal1');}cal1.setLocale(locale); // 会执行 alert('cal1');
cal2.setLocale(locale); // 仍会执行原来定义的 function(locale){};
// 这种方式定义的方法,实例之间的方法是互相独立,每个实例中都有自己定义的 setLocale()
而对第2种function Calendar() {
.....
}var cal1 = new Calendar();
var cal2 = new Calendar();$.extend(Calendar.prototype, {
setLocale : function(locale){alert(new Date());}
});// 基于原型的方式定义的方法,对所有该类型的实例,是共享的。
// 由于是修改的原型,则这个方法会对所有 Calendar() 立刻有效, 即:
cal1.setLocale(locale); // 会执行 alert(new Date());
cal2.setLocale(locale); // 也会执行重新定义的 alert(new Date());