請注意,這只是我個人的筆記,因為還沒有完全研究,所以如果內容有錯誤,請各位指正,謝謝
(比如說 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'
文章標籤
全站熱搜
