js構(gòu)造函數(shù)、原型鏈、ajax筆記

js構(gòu)造函數(shù)、原型鏈、ajax筆記

ID:13439550

大?。?8.13 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2018-07-22

js構(gòu)造函數(shù)、原型鏈、ajax筆記_第1頁(yè)
js構(gòu)造函數(shù)、原型鏈、ajax筆記_第2頁(yè)
js構(gòu)造函數(shù)、原型鏈、ajax筆記_第3頁(yè)
js構(gòu)造函數(shù)、原型鏈、ajax筆記_第4頁(yè)
js構(gòu)造函數(shù)、原型鏈、ajax筆記_第5頁(yè)
資源描述:

《js構(gòu)造函數(shù)、原型鏈、ajax筆記》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、一、This——運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境綁定1、全局函數(shù):window2、函數(shù)作為某個(gè)對(duì)象obj的方法調(diào)用:obj3、匿名函數(shù):全局性,通常指向window4、修改this作用域:apply()、call()。第一個(gè)參數(shù)為目標(biāo)對(duì)象;第二個(gè)參數(shù):apply接收參數(shù)數(shù)組,call接受參數(shù)值二、閉包1、定義:有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中變量的函數(shù)2、實(shí)現(xiàn):在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)3、變量:只能取得包含函數(shù)中任何變量的最后一個(gè)值,保存的是整個(gè)變量對(duì)象(典型:for循環(huán)中的閉包總是返回最后一個(gè)循環(huán)的值,無(wú)法返回每次循環(huán)的值)4、解決:在閉包內(nèi)部再創(chuàng)建一個(gè)

2、匿名函數(shù)functionaa(){varresult;for(vari=0;i<10;i++){result[i]=function(num){//閉包returnfunction(){//閉包中再創(chuàng)建一個(gè)函數(shù)alert(num);}}(i);}}三、塊級(jí)作用域(function(){//塊級(jí)作用域,其中的變量在執(zhí)行結(jié)束后被銷毀})();四、創(chuàng)建對(duì)象1、簡(jiǎn)單方式varperson=newObject();person.name=“LL”;person.age=22;問(wèn)題:創(chuàng)建多個(gè)相似對(duì)象,大量重復(fù)代碼2、工廠模式functionPerson(na

3、me,age){varo=newObject();o.name=name;o.age=age;o.getName=function(){alert(this.name);}returno;}varperson1=newPerson(“LL”,22);person1.getName();//”LL”(1)根據(jù)接受的參數(shù)來(lái)構(gòu)建一個(gè)包含所有必要信息的Person對(duì)象,多次調(diào)用,每次返回一個(gè)包含兩個(gè)屬性和一個(gè)方法的對(duì)象。(2)優(yōu)點(diǎn):解決了創(chuàng)建多個(gè)相似對(duì)象的問(wèn)題問(wèn)題:對(duì)象識(shí)別的問(wèn)題,即怎樣知道一個(gè)對(duì)象的類型解決:構(gòu)造函數(shù)1、構(gòu)造函數(shù)模式functionPe

4、rson(name,age){this.name=name;this.age=age;this.getName=function(){alert(this.name);};}varperson1=newPerson(“LL”,22);(1)與工廠模式比較a.沒(méi)有顯示的創(chuàng)建對(duì)象;b.直接將屬性和方法賦值給this對(duì)象;c.沒(méi)有return語(yǔ)句;d.將實(shí)例標(biāo)識(shí)為一種特定的類型(instanceof);(2)構(gòu)造函數(shù)與普通函數(shù)區(qū)別a.習(xí)慣:構(gòu)造函數(shù)始終一個(gè)大寫(xiě)字母開(kāi)頭,非構(gòu)造函數(shù)以一個(gè)小寫(xiě)字母開(kāi)頭b.唯一區(qū)別:調(diào)用方式不同,用new調(diào)用為構(gòu)造函數(shù),不用

5、new為普通函數(shù)(3)Constructor屬性:標(biāo)識(shí)對(duì)象類型person1.constructor==Person;(4)Instanceof操作符:檢測(cè)對(duì)象類型person1既是Object的實(shí)例,也是Person的實(shí)例person1instanceofObject==true;person1instanceofPerson==true;(5)問(wèn)題:每個(gè)方法都要在每個(gè)實(shí)例上重新創(chuàng)建一遍解決:將方法定義在構(gòu)造函數(shù)外部新問(wèn)題:方法很多——定義很多全局函數(shù)——自定義的類型無(wú)封裝性解決:原型模式2、原型模式functionPerson(){};Per

6、son.prototype.name=”LL”;Person.protptype.age=22;Person.prototype.getName=function(){alert(this.name);}varperson1=newPerson();person1.job=“doctor”;alert(person1.name);//“LL”(1)函數(shù)的prototype屬性:指針,指向一個(gè)對(duì)象,該對(duì)象包含可以由特定類型的所有實(shí)例共享的屬性和方法。(2)與構(gòu)造函數(shù)區(qū)別:不必在構(gòu)造函數(shù)中定義對(duì)象實(shí)例的信息,將這些信息添加到原型對(duì)象中;(3)實(shí)例中訪

7、問(wèn)的都是同一組屬性和方法(4)原型對(duì)象a.函數(shù)的prototype(原型)屬性:指向函數(shù)的原型對(duì)象b.constructor(構(gòu)造函數(shù))屬性:包含一個(gè)指向prototype屬性所在函數(shù)的指針Person.prototype.constructor==Person;c.對(duì)象實(shí)例只可以訪問(wèn)保存在原型中的值,不可通過(guò)對(duì)象實(shí)例重寫(xiě)原型中的值d.為對(duì)象實(shí)例添加一個(gè)屬性時(shí),可屏蔽原型對(duì)象中的同名屬性,delet可以刪除新添加的屬性,重新訪問(wèn)原型中的屬性值(5)hasOwnProperty()——檢測(cè)一個(gè)屬性是在原型中還是實(shí)例中,實(shí)例中返回trueperson

8、1.hasOwnProperty(“name”)==flase;person1.hasOwnProperty(job)==true;(6

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。