//?順手寫的demo肯定不完善,真要用自己寫個addClass函數吧
HTMLElement.prototype.addClass?=?function(sClass)?{
????if?(new?RegExp(sClass).test(this.className))?return;
????this.className?+=?!this.className.length???sClass?:?'?'?+?sClass;
}
你要在原生的DOM對象上直接用 . 來調用,可以直接對HTMLElement的原型進行擴展。。當然jQuery不是這么做的,你在使用 $('div').addClass('sClass');這些方法的時候操作的并不是原生的DOM對象,而是通過jQuery包裝過的對象,包裝后的jQuery對象上就帶有了各種各樣的jQuery方法,所以你都能直接在那些對象上用 . 來調用
———— 再補充個例子 ————
function?$(elem)?{
????return?new?baseObj(elem);
}
function?baseObj(elem)?{
????this.elem?=?elem;
}
baseObj.prototype?=?{
????addClass:?function(sClass)?{
????????this.elem.className?+=?'?'?+?sClass;
????}
}
jQuery的包裝過程大概類似這樣 用$選擇器拿到的對象是包裝后的jQuery對象,并不是原生的js對象