亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
注意:javascript中的Array對象的indexOf()方法,如果要檢索的字符串值沒有出現,則該方法返回 -1, 返回-1,返回-1 ?。?!
once 表示:遍歷完列表后,立即將列表清空。
定義一個函數(對象),該函數的每一個實例內部存在一個數組,這個數組包含了所有觀察者。實例中的add remove fire等方法都是對這個數組進行操作。
‘通過回調函數callback返回的ture/false的布爾值結果就可以來判斷當前是否要強制退出循環’,這樣做的好處:
提高性能
為什么呢?
比如我們要把包含5個<li>的jQuery對象中的前三個li元素隱藏。
兩種方法:
1 $fiveLi.each(function(index,ele){if(index <3){$(ele).hide()}});//這樣會循環5次
2 $fiveLi.each(function(index,ele){if(index >= 3){return false} $(ele).hide()}) // 這樣只會循環3次
回顧:pushStack做了四件事
1 新建一個空的jQuery對象
2 新建的空對象將參數(實際上也是一個對象)包含合并
3 將合并后的jQuery對象的pervObject指向this
4 返回合并后的對象

再來分析一下eq()的源碼:
eq()首先解析傳入的參數,該不動的不動,該轉換的轉換;然后調用pushStack()函數,并將對應的DOM對象作為參數傳入,然后將pushStack()函數返回的jQuery對象返回。
注意: 返回的jQuery對象的prevObject已經指向了調用eq()方法的對象。比如: aObj.eq(0).prevObject-->aObj
pushStack: function( elems ) {
// Build a new jQuery matched element set
var ret = jQuery.merge( this.constructor(), elems );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
ret.context = this.context;
// Return new jQueryObject
return ret;
}
大家一定要注意:eq() 方法取出來的是 jQuery對象,而get()取出來的是DOM對象。
解釋一下這句話(流程解析中的1): ‘因為constructor是指向構造器的,所以這里就等同于調用jQuery()方法了’
我們知道:
1 jQuery = function(){ return new jQuery.fn.init(); }
2 jQuery.fn = jQuery.prototype = { init:function(){//.....} , constructor:jQuery }
所以 this.constructor() == jQuery()
jQuery對象是一個類數組對象,注意:類數組對象并不是數組!
至于棧結構:則是先進后出,FILO( first in last out ),類似于一個沒有蓋的木桶,第一次放進去的水(假設不考慮水分子的運動)在最下面,第二次放進去的水在第一次放進去的水的上面....取水時,先取最后一次放進去的水,第一次放進去的水反而最后取出來。
1 插件分兩種,一種是靜態函數: 不用實例化就可以直接調用,比如:Math.floor();另一種是實例方法:只有實例才能使用,比如: var a = 'hah' ; a.length
2 jQuery.extend() 和 jQuery.fn.extend() 指向的都是同一個函數,之所以能實現不同的功能,就死因為函數內部通過對 this 進行判斷進而實現了重載。
3 詳細的關于extend()函數的講解,在我的博客:http://www.cnblogs.com/MnCu8261/p/6039986.html
所以我們如果需要鏈式的處理,只需要在方法內部方法當前的這個實例對象this就可以了。 課程中的這句話有歧義: 1 像css() hide() addClass() show()等這些方法,直接返回this是沒有問題的。
2 而next() childern() parent() 等這些方法,則需要對this進行處理,然后將處理之后的結果進行返回。
不過,總之,鏈式處理的前提必須是方法中必須返回一個或者一些實例對象
我覺得叫苦是沒用的,本課程的講解是有前提的----必需熟練掌握javascript基礎知識!不掌握這些知識肯定看不懂,其次,我們還要對面向對象,插件編寫等有一定的了解,否則我們只能讀懂代碼,但不清楚:為啥要這樣做?如果用那樣的方式不是會更簡單嗎?這么繞來繞去有啥用? 再就是,即使我們能做到以上兩點,我們就能游刃有余的學習這門課程了么?我只能說:騷年,圖樣圖私募跑! 我們需要反復閱讀本課程,很多東西需要我們反復思考才能理解,才能查漏補缺。
js中的面向對象這一塊不熟悉的,可以看我的博客:http://www.cnblogs.com/MnCu8261/p/5965397.html
我做了將近兩年的前端,看著還是感覺費勁
在javascript的世界中一共有四種上下文調用方式:方法調用模式、函數調用模式、構造器調用模式、apply調用模式。我要分別解釋一下:
方法調用模式: 類似于foo.bar(),函數作為一個對象的方法出現,this指向foo。
函數調用模式:類似于bar(),函數單獨出現,this指向window
構造器調用模式:類似于 var foo = new bar(),this指向new bar()返回的對象。
apply調用:類似于bar.apply(object),this指向object
課程須知
源碼的閱讀不是一蹴而就的,需要大家有一定的功底,比如jQuery的基礎運用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基礎功底,甚至還需要理解常見的設計模式、數據結構等等。當然大家也不要被這些給嚇住了,理解,總是需要一種慢慢的學習過程。
老師告訴你能學到什么?
通過本課程的學習,您可以由淺入深地剖析jQuery庫的設計與實現。 其中我們圍繞的重心: 1、設計理念 2、結構組織 3、接口設計 4、模式運用 5、場景套用

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消