精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
分析jQuery創(chuàng)建實(shí)例與原型繼承是怎么處理的

分析jQuery創(chuàng)建實(shí)例與原型繼承是怎么處理的

  在普通情況下我們要用原生類、或者自定義類創(chuàng)建實(shí)例要用new運(yùn)算符,使構(gòu)造函數(shù)創(chuàng)建一個實(shí)例,并且實(shí)例繼承構(gòu)造器prototype上的所有公有方法。如 new Object()、new Date()等等!(object有{},數(shù)組有[]這樣的快捷方式 ,我們主要探討new這種方式。)

  我們在使用jQuery時從來沒有使用過new,他是不是用其他方法來生成實(shí)例呢?是不是沒有使用prototype屬性呢?事實(shí)上他都有使用,只是內(nèi)部處理的非常巧妙,提高了使用的爽快度。我們來看看他的源碼

funtion jQuery( selector, context){  return new jQuery.fn.init( selector, context );}  

  這里可以看出jQuery是有構(gòu)造函數(shù)的,也是用了new 創(chuàng)建實(shí)例的。那么jQuery.fn是什么呢?后面有個這樣的處理:

jQuery.fn = jQuery.prototype={       init:function (){}} 

  這樣我們就明白了,jQuery的構(gòu)造函數(shù)是他原型上的init方法,而不是function jQuery。這樣的話每次調(diào)用$()他都會用jQuery原型上的init創(chuàng)建一個實(shí)例,那么新的問題來了。如果用init創(chuàng)建實(shí)例的話,這個對象繼承的是init的prototype上的方法而不會繼承jQuery prototype上的方法,那么他是怎么實(shí)現(xiàn)原型繼承的呢?

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

  這里他有一個這樣的處理,把jQuery.fn賦值給了jQuery.fn.init.prototype ,這一步很關(guān)鍵。我門看看這些是什么。

jQuery.fn是jQuery.prototype
jQuery.fn.init.prototype是jQuery.prototype.init.prototype

  這個處理相當(dāng)于

jQuery.prototype = jQuery.prototype.init.prototype

  那么每當(dāng)我們調(diào)用$()是,jQuery就會用new運(yùn)算符調(diào)用他prototype上的init創(chuàng)建一個實(shí)例,這個由init創(chuàng)建實(shí)例會繼承jQuery protype上的所有方法,并且這個實(shí)例的__proto__內(nèi)部屬性會指向jQuery的prototype屬性。

  另外我們注意到這個處理:

jQuery.fn = jQuery.prototype

這是他為了避免頻繁的操作jQuery.prototype,所以用jQuery.fn緩存了jQuery.prototype。

    這些的處理實(shí)在是非常巧妙,內(nèi)部處理了實(shí)例創(chuàng)建不用使用者用new去生成實(shí)例,又非常漂亮的處理了prototype保證多實(shí)例共享方法減少資源開支,約翰哥真的不簡單。


jQuery 類數(shù)組的實(shí)現(xiàn)

jQuery的源代碼中只有在protype對象加上length屬性和splice方法后,在firebug中jQuery.prototype和jQuery.fn就顯示為[] 了,不信試試....

給任何一個構(gòu)造函數(shù)的prototype屬性添加這兩個屬性后,prototype對象都會顯示 ’ [ ] ‘

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
jquery 原型
對jquery庫和源代碼的工作原理的分析
JS 對象封裝的常用方式
jQuery.fn和jQuery.prototype區(qū)別介紹
jQuery1.3.2 源碼學(xué)習(xí)
【深入淺出jQuery】源碼淺析
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 灵寿县| 沐川县| 泸定县| 宁武县| 天台县| 聊城市| 韶山市| 沂源县| 丹寨县| 宜兴市| 遂平县| 晋宁县| 恭城| 应城市| 陵水| 合水县| 彩票| 互助| 财经| 望都县| 东丰县| 南陵县| 来安县| 乐陵市| 竹溪县| 荥阳市| 宜州市| 金湖县| 吉林市| 乌兰察布市| 金塔县| 深圳市| 武穴市| 曲周县| 四平市| 子长县| 武穴市| 承德县| 富阳市| 洛浦县| 佛冈县|