欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過jQuery源碼學習javascript(一)

 更新時間:2012年12月27日 15:44:55   作者:  
最近在做日志統(tǒng)計程序,發(fā)現(xiàn)對方的程序是在Jquery基礎上進行開發(fā)的,而公司的網站的框架是prototype。而且我也早就想了解一下Jquery源碼,故決定研究Jquery源碼,模擬它的方法
Jquery這么普及,必有它過人之處,通過開源代碼進行學習,是個不錯的學習方法??!

以下是我模擬的方法,我盡量簡化方法。

定義對象C(類似于jquery的$方法)——這個也是jquery設計非常巧妙的地方

復制代碼 代碼如下:

(function(){
var
_cQuery = window.cQuery,
cQuery = function(){
return new cQuery.fn.init();
};
cQuery.fn = cQuery.prototype = {
init : function () {
         console.log(this);
return this;
},
test : function () {
console.log('test');
}
};
cQuery.fn.init.prototype = cQuery.fn;
window.C = window.cQuery = cQuery;
})();

C().test();

輸出結果

代碼分析

1、把cQuery注冊到window屬性中,當成全局變量使用。用C做為簡易名稱。

window.C = window.cQuery = cQuery;

2、
cQuery.fn.init.prototype = cQuery.fn;
  拿圖說話(打印當前對象cQuery):

去掉該句截圖?! ?

填上此句截圖:

難點分析:原型傳遞
  init的原型只是當前的函數?!?

  用cQuery.fn.init.prototype = cQuery.fn;覆蓋init構造器的原型對象,從而實現(xiàn)跨域訪問。
評估:
  這是一招妙棋,new cQuery.fn.init()創(chuàng)建的新對象擁有init構造器的prototype原型對象的方法,通過改變prototype指針的指向,使其指向cQuery類的prototype。——這樣創(chuàng)建出來的對象就繼承了cQuery.fn原型對象定義的方法。
  3、用一個var定義變量,函數。Jquery源碼里用了79行定義了一連串的變量(在開頭部分)。

each方法
復制代碼 代碼如下:

(function(){
var
_cQuery = window.cQuery,
cQuery = function(){
return new cQuery.fn.init();
};
cQuery.fn = cQuery.prototype = {
init : function () {
return this;
},
each : function(obj, callback) { // each 方法
var name, length = obj.length;
for (name in obj) {
if (callback.call(obj[name], name, obj[name]) === false) {
break;
}
}
},
isWindow : function(obj) {
return obj != null && obj == obj.window;
}
};
cQuery.fn.init.prototype = cQuery.fn;
window.C = window.cQuery =cQuery;
})();

C().each({ Height : 'height', Width : 'width'}, function(name, type){ console.log(this, name, type); });

輸出結果

難點分析:callback.call(obj[name], name, obj[name])
callback是function(name, type){ console.log(this, name,type);}這個方法
第一個obj[name]是"height“或"width"字符串,是callback函數里的this。
name,第二個obj[name]是傳給callback的參數。

isWindow()方法

在上面代碼的基礎上,進行編寫:
復制代碼 代碼如下:

isWindow : function(obj) {
return obj != null && obj == obj.window;
}

調用:
復制代碼 代碼如下:

console.log(cquery.isWindow(window));
console.log(cquery.isWindow(document));

輸出結果

window對象有一個特殊的屬性window,等價于 self 屬性,它包含了對窗口自身的引用。通過這個屬性判斷是否是window對象!

總結

  我也是剛開始研究??赡苡行┑胤秸f的不是很清楚,如果有人能給我補充,那再好不過了。
  時間不早了,下回再接著研究。

相關文章

  • JQuery 學習技巧總結

    JQuery 學習技巧總結

    jQuery是繼prototype之后的又一個優(yōu)秀的Javascript框架。它是由 John Resig 于 2006 年初創(chuàng)建的,它有助于簡化 JavaScript™ 以及Ajax 編程。
    2010-05-05
  • jquery中的on方法使用介紹

    jquery中的on方法使用介紹

    使用jquery的朋友對其中的on方法并不陌生吧,下面為大家介紹下此方法的具體使用,感興趣的朋友可以參考下
    2013-12-12
  • Jquery實現(xiàn)自定義彈窗示例

    Jquery實現(xiàn)自定義彈窗示例

    使用javascript自帶的提示對話框,不怎么美觀,如果使用自定義的,那么在樣式上就會有更多的控制權了,下面為大家分享下Jquery自定義的彈窗
    2014-03-03
  • jQuery+PHP實現(xiàn)上傳裁剪圖片

    jQuery+PHP實現(xiàn)上傳裁剪圖片

    這篇文章主要為大家詳細介紹了jQuery+PHP實現(xiàn)上傳裁剪圖片,以及圖片的預覽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • jquery——九宮格大轉盤抽獎實例

    jquery——九宮格大轉盤抽獎實例

    本篇文章主要介紹了jquery——九宮格大轉盤抽獎實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • jQuery簡單動畫變換效果實例分析

    jQuery簡單動畫變換效果實例分析

    這篇文章主要介紹了jQuery簡單動畫變換效果,結合實例形式分析了jQuery使用toggle及animate等方法動態(tài)操作頁面元素樣式的相關技巧,需要的朋友可以參考下
    2016-07-07
  • jQuery.Validate驗證庫的使用介紹

    jQuery.Validate驗證庫的使用介紹

    本篇文章介紹了,jQuery.Validate驗證庫的使用。需要的朋友參考下
    2013-04-04
  • 使用jQuery制作遮罩層彈出效果的極簡實例分享

    使用jQuery制作遮罩層彈出效果的極簡實例分享

    這篇文章主要介紹了使用jQuery制作遮罩層彈出效果的極簡實例分享,效果中背景為半透冥且不可操作,在制作頁面上傳功能等場景下十分實用,需要的朋友可以參考下
    2016-05-05
  • jQuery實現(xiàn)最簡單的切換圖效果【可兼容IE6、火狐、谷歌、opera等】

    jQuery實現(xiàn)最簡單的切換圖效果【可兼容IE6、火狐、谷歌、opera等】

    這篇文章主要介紹了jQuery實現(xiàn)最簡單的切換圖效果,可兼容IE6、火狐、谷歌、opera等瀏覽器,涉及jQuery結合時間函數動態(tài)操作頁面元素的相關技巧,非常簡單實用,需要的朋友可以參考下
    2016-09-09
  • jQuery?基礎選擇器與屬性選擇器

    jQuery?基礎選擇器與屬性選擇器

    這篇文章主要介紹了jQuery?基礎選擇器與屬性選擇器,選擇所有元素,此選擇器使用要慎重,其速度是極其慢的,詳細介紹內容需要的小伙伴可以參考一下下面文章內容
    2022-08-08

最新評論