3 回答

TA貢獻1836條經驗 獲得超5個贊
$.fn.pluginName = function(opt){}
就是為jquery的prototype定義了函數, 這樣, 任何一個jquery對象都可以使用這個成員函數, 這種寫法直觀明了, 你只要知道的就是$.fn = jQuery.prototype = $.prototype
$.fn.extend, 在jquery中重新定義了extend的使用方法, 如果只有一個參數, 那么就是擴展本身, 即$.fn.extend({}), 就是用{}對象擴展$.fn, 也就是jquery的prototype, 這樣, 和上面那個就一樣了
兩者沒有什么區別, 怎么用看自己習慣和理解
還有一種寫法就是$.extend($.fn, {}); 這個extend不是一個參數, 它作用是用后面的擴展前面的, 即用{}擴展了$.fn, 還是一個意思
關于$(this)和this, 你關鍵還是要知道this表示的是什么, 如果this是一個dom元素, 那么$(this)是一個jquery元素, 如果this是一個jquery元素, 那么$(this)還是一個jquery元素, 雖然你用==去判斷兩者是不同的, 但是他們內容都是一樣的, 這是我的經驗, 我并沒有去深入看過源碼, jquery的api中似乎也沒有說這個.
關于this和$(this)還要注意一點$('.abc').click(function(){});中this是dom元素, $(this)是jquery元素, 而寫插件的時候, 由于是擴展prototype, 所以this就是對象實例, 即this就是jquery對象, $(this)還是jquery對象, 他們雖然不是同一對象, 但是內容是完全相同的
- 3 回答
- 0 關注
- 631 瀏覽
添加回答
舉報