引用類型(functionstringnumberarraydate)----->Object---->對(duì)象原型----->函數(shù)表達(dá)式--->數(shù)據(jù)類型面向?qū)ο螅侯惡蛯?duì)象,通過類可以創(chuàng)建任意多個(gè)具有相同屬性和方法的對(duì)象。EC">
JS對(duì)象與原型

JS對(duì)象與原型

ID:37944617

大?。?.84 MB

頁數(shù):13頁

時(shí)間:2019-06-03

JS對(duì)象與原型_第1頁
JS對(duì)象與原型_第2頁
JS對(duì)象與原型_第3頁
JS對(duì)象與原型_第4頁
JS對(duì)象與原型_第5頁
資源描述:

《JS對(duì)象與原型》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、面向?qū)ο笤O(shè)計(jì)-->引用類型(functionstringnumberarraydate)----->Object---->對(duì)象原型----->函數(shù)表達(dá)式--->數(shù)據(jù)類型面向?qū)ο螅侯惡蛯?duì)象,通過類可以創(chuàng)建任意多個(gè)具有相同屬性和方法的對(duì)象。ECMA定義對(duì)象:無序?qū)傩缘募希鋵傩钥梢园局?、?duì)象或者函數(shù)。相當(dāng)于一組沒有特定順序的值,對(duì)象的每個(gè)屬性或方法都有一個(gè)名字,而每個(gè)名字映射到一個(gè)值。即:對(duì)象就是一組鍵值對(duì),其中值可以是數(shù)據(jù)或函數(shù)。每個(gè)對(duì)象都是基于一個(gè)引用類型創(chuàng)建的。Object是所有JS對(duì)象的基類protot

2、ype是對(duì)象的原型obj.constructor是創(chuàng)造該對(duì)象的構(gòu)造器一、創(chuàng)建自定義對(duì)象varperson=newObject();person.name="dujie";person.say=function(){alert(this.name)};字面量法:varperson={name:"dujie",say:function(){alert(this.name);}}二、對(duì)象屬性內(nèi)部采用的特性,描述了屬性的各種特征,這些特性是為了實(shí)現(xiàn)JavaScript引擎用的,在js中不能直接訪問,為了表示特性是內(nèi)部值,規(guī)

3、范把他們放在了兩對(duì)方括號(hào)里例如:[[Enumerable]]ECMAScript中有兩種屬性:數(shù)據(jù)屬性和訪問器屬性1.數(shù)據(jù)屬性:包含一個(gè)數(shù)據(jù)值的位置,行為(在這個(gè)位置可以讀取和寫入值)4個(gè)描述行為:@1.[[Configurable]]:表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性或者能否把屬性修改為訪問器屬性。默認(rèn)值為true@2.[[Enumerable]]:表示能否通過for-in循環(huán)返回屬性,默認(rèn)為true@3.[[Writable]]:表示能否修改屬性的值默認(rèn)為true@4.[[V

4、alue]]:包含這個(gè)屬性的數(shù)據(jù)值。默認(rèn)為undefined,從這個(gè)位置讀取或?qū)懭氡4鎸傩缘闹刀x對(duì)象時(shí)varperson={name:"dujie"}[[Value]]特性將被設(shè)置為"dujie"若要修改屬性默認(rèn)的特性,必須使用ECMAScript5的Object.defineProperty()方法Object.defineProperty(obj,"屬性名",描述符對(duì)象)描述符對(duì)象的屬性必須是configurableenumerablewritablevalue例如:varperson={};Object.d

5、efineProperty(person,"name",{writable:false,屬性值不可以修改,變成只讀configurable:false不可從對(duì)象中刪除屬性deleteperson.name無效果value:"dujie"});alert(person.name)//dujieperson.name="jack";alert(person.name)//dujie注意:可以多次調(diào)用Object.defineProperty()方法修改同一屬性的特性,但是把configurable特性設(shè)置為false后

6、就會(huì)有限制,除writable之外的特性都會(huì)報(bào)錯(cuò)原型對(duì)象模仿類,實(shí)例化對(duì)象實(shí)例化對(duì)象流程:1.創(chuàng)建obj=newObject()2.將obj的內(nèi)部__proto__指向構(gòu)造函數(shù)A的prototype屬性,同時(shí)obj.constructor===A.prototype.constructor類的實(shí)例對(duì)象的constructor屬性永遠(yuǎn)指向構(gòu)造函數(shù)的prototype.constructor,構(gòu)造函數(shù)person原型對(duì)象person.prototype對(duì)象實(shí)例person1三者的關(guān)系:每個(gè)構(gòu)造函數(shù)都有一個(gè)原型對(duì)象,原型

7、對(duì)象都包含一個(gè)指向構(gòu)造函數(shù)的指針,而實(shí)例都包含一個(gè)指向原型對(duì)象的內(nèi)部指針。原型鏈:原型對(duì)象等于另一個(gè)類型的實(shí)例,將包含一個(gè)指向另一個(gè)原型的指針,相應(yīng)地另一個(gè)原型中也包含指向另一個(gè)構(gòu)造函數(shù)的指針,層層遞進(jìn),構(gòu)成了原型連在實(shí)例中無法訪問prototype屬性,可通過isPrototypeOf()方法來確定對(duì)象之間是否存在這種關(guān)系person.prototype.isPrototypeOf(person1)//返回true因?yàn)閜erson1內(nèi)部有一個(gè)指向person.prototype的指針,所以返回true如果實(shí)例中的

8、prototype指向調(diào)用isPrototypeOf()方法的對(duì)象(person.prototype),就返回trueECMAScript5增加方法:Object.getPrototypeOf()返回[[Prototype]]的值(對(duì)象原型)(IE9+Firefox3.5Safari5+Opera12+Chrome支持此方法)alert(Object.get

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(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)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。