多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jquery > jQuery1.3.2源碼學習5:jQuery 中的原型

jQuery1.3.2源碼學習5:jQuery 中的原型

來源:程序員人生   發布時間:2013-10-11 23:34:23 閱讀次數:4226次

原型 prototype

在 JavaScript 中,每個函數對象都有一個默認的屬性 prototype,稱為函數對象的原型成員,這個屬性指向一個對象,稱為函數的原型對象,當我們每定義了一個函數的時候,JavaScript 就創建了一個對應的原型對象,也就是說,當我們定義一個函數的時候,實際上得到了兩個對象,一個函數對象,一個原型對象。原型對象是一個特殊的對象,函數的 prototype 成員指向它的原型對象。

可以通過函數對象的 prototype 成員取得這個原型對象的引用。

下面定義一個函數對象 Person,然后通過 prototype 來取得它的原型對象。然后在它的原型對象上定義了一個方法。

function Person()

{

}

Person.prototype.showPerson = function()

{

alert( “Person Object.”);

}

var alice = new Person();

alice.showPerson();

這個原型對象上定義的成員將用來共享給所有通過這個函數創建的對象使用。相當于 C# 中的實例方法,對象,函數和原型在內存中的關系如下圖所示:

jQuery 中的原型

每個對象也都有一個原型成員 prototype,通過 new 函數創建的對象會通過函數的 prototype 找到函數的原型,然后將自己的原型指向這個對象。對于不是通過函數創建的對象實例和原型對象,它們的原型會被設置為 Object 函數的原型對象。

Object 函數對象是 JavaScript 中定義的頂級函數對象,在 JavaScript 中所有的對象都直接或者間接地使用 Object 對象的原型。

當訪問對象的屬性或者方法的時候,如果對象本身沒有這個屬性或者方法,那么,JavaScript 會檢查對象的 prototype 對象是否擁有這個屬性或者方法,如果有,則作為對象的屬性或者方法返回,如果沒有,那么將通過原型對象的 prototype 繼續進行檢查,直到原型對象為 Object 函數的原型對象為止。

但是 prototype 是一個特殊的屬性,在大多數的瀏覽器上,例如 IE 瀏覽器,都不能直接訪問對象的 prototype 成員。返回的結果為 undefined。不能賦予對象一個新的原型,只能通過創建它的函數來確定對象的原型。

函數對象的原型有一個特殊的用途,就是通過函數 new 創建出來的對象,會自動將函數對象的原型賦予新創建出的對象的原型。這樣,如果為某個函數設置了原型對象,那么,所有通過這個函數創建的對象將擁有同樣的原型對象。通過這個方法,可以使這些對象共享相同的屬性或者方法,來模擬類型的概念。

在 jQuery 中,我們經常使用的 $ 函數就是定義在 window 對象上的 $ 函數。

其代碼如下:

24 jQuery = window.jQuery = window.$ = function( selector, context ) {

25 // The jQuery object is actually just the init constructor 'enhanced'

26 return new jQuery.fn.init( selector, context );

27 },

這個函數實際上通過 new jQuery.fn.init( selector, context )來完成,也就是通過 init 函數創建了一個對象。

在 541 行重新指定了函數 init 的原型對象。所以 init 函數的原型對象就是 fn 對象。

540 // Give the init function the jQuery prototype for later instantiation

541 jQuery.fn.init.prototype = jQuery.fn;

這樣所有通過 $ 創建出來的對象都將共享 fn 對象上的成員。因此,jQuery 對象都有了類似 attr 、html 等等方法了。

參考資料:

李戰 悟透javascript

來源:博客園

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 天天久久综合 | 日韩欧美视频一区二区在线观看 | 久草在线观看首页 | 在线资源你懂的 | 日本一区二区三区欧美在线观看 | 男女午夜视频 | 免费爽视频 | 亚洲 校园 春色 另类 激情 | 亚洲大成色www永久网 | 成人国产亚洲欧美成人综合网 | 亚洲性夜 | 国产精品亚洲精品爽爽 | 欧美成人h版在线观看 | 日本护士做xxxxxhd | 成人中文字幕在线 | 欧美高清一级片 | 成人在线一区二区 | 国产video | 欧美不卡视频在线 | 伊人久久精品成人网 | 嗯啊在线观看免费影院 | 欧美一区二区三区高清不卡tv | 亚洲视频在线观看地址 | 久久精品中文字幕极品 | 成人福利社区 | 一级国产20岁美女毛片 | 日韩v欧美| 亚洲欧美日韩综合一区 | 国产精品久久久久久久毛片 | 国产日韩欧美精品一区二区三区 | 成人亚洲精品一区二区 | 在线欧美三级 | 男女同房视频免费爽爽 | 亚洲在线免费 | 国产一区二区三区四区五区六区 | 午夜免费播放观看在线视频 | 日本精品a在线观看 | 一区二区三区国模大胆 | 成人a大片高清在线观看 | 日本一级毛片免费播放 | 日本韩国欧美三级 |