請注意,這只是我個人的筆記,因為還沒有完全研究,所以如果內容有錯誤,請各位指正,謝謝
(比如說 jQuery 有用到 prototype 來定義物件,我這裡就還沒看懂是怎麼處理的)
--
<script> // 以 jQuery.trim 為例來建立類似 jQuery 的物件定義方式 // 只是類似而以,因為 jQuery 還有使用 prototype 的方式來定義 // 目前還沒有研究 // 以 my_jQuery 及 $$ 來命名 (function(window) { // private 的屬性及方法 var Version="0.0001"; // public var my_jQuery = { // 去除字串前後空白 trim : function(str) { return str.replace(/^\s+/, '').replace(/\s+$/, ''); }, // 傳回目前版本 version :function() { return Version; } }; // 直接在 window 定義物件(所以不用回傳值) window.my_jQuery = window.$$ = my_jQuery; })(window); // 這裡使用立即函式來定義 my_jQuery,請注意執行時將 window 當參數傳入 // 所以能直接在 window 下定義 my_jQuery,所以才不需要回傳值 // 也就是這樣,所以才能使用 .noConflict 的方式來放棄對 window.$ 變數的控制 //================== 測試 ========================== // 看看目前 my_jQuery 的定義 console.log("my_jQuery", my_jQuery); // 查看 my_jQuery 的版本 console.log("my_jQuery Version: " + $$.version()); // 測試 my_jQuery.trim var str = " 123 "; console.log("原始字串 = '" + str + "'"); str = $$.trim(str); console.log("trim 後字串 = '" + str + "'"); </script>
執行結果:
my_jQuery Object { trim=function(), version=function()}
my_jQuery Version: 0.0001
原始字串 = ' 123 '
trim 後字串 = '123'
全站熱搜