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

JS對象與原型

ID:37944617

大?。?.84 MB

頁數(shù):13頁

時間:2019-06-03

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

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

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

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

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

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

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

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

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

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

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

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

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