欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript高級(jí)程序設(shè)計(jì)

 更新時(shí)間:2006年12月29日 00:00:00   作者:  
前一章簡(jiǎn)要談及對(duì)象的使用,現(xiàn)在要詳細(xì)介紹它們了。對(duì)象的創(chuàng)建或銷毀都在JavaScript執(zhí)行過(guò)程中發(fā)生,理解這種范式的含義對(duì)理解整個(gè)語(yǔ)言至關(guān)重要。
3.2.1 聲明和實(shí)例化
對(duì)象是用關(guān)鍵字new后跟要實(shí)例化的類的名字創(chuàng)建的:
第一行代碼創(chuàng)建了Object類的一個(gè)實(shí)例,并把它存儲(chǔ)在變量oObject中。第二行代碼創(chuàng)建了String類的一個(gè)實(shí)例,把它存儲(chǔ)在變量oStringObject中。如果構(gòu)造函數(shù)無(wú)參數(shù),括號(hào)則不是必需的,因此可以采用下面的形式重寫(xiě)上面的兩行代碼:
3.2.2  對(duì)象引用
在第2章中,介紹了引用類型的概念。在ECMAScript中,不能訪問(wèn)對(duì)象的物理表示,只能訪問(wèn)對(duì)象的引用。每次創(chuàng)建對(duì)象,存儲(chǔ)在變量中的都是該對(duì)象的引用,而不是對(duì)象本身。
3.2.3  對(duì)象廢除
ECMAScript有無(wú)用存儲(chǔ)單元收集程序,意味著不必專門銷毀對(duì)象來(lái)釋放內(nèi)存。當(dāng)再?zèng)]有對(duì)對(duì)象的引用時(shí),稱該對(duì)象被廢除(dereference)了。運(yùn)行無(wú)用存儲(chǔ)單元收集程序時(shí),所有廢除的對(duì)象都被銷毀。每當(dāng)函數(shù)執(zhí)行完它的代碼,無(wú)用存儲(chǔ)單元收集程序都會(huì)運(yùn)行,釋放所有的局部變量,還有在一些其他不可預(yù)知的情況下,無(wú)用存儲(chǔ)單元收集程序也會(huì)運(yùn)行。
把對(duì)象的所有引用都設(shè)置為null,可以強(qiáng)制性的廢除對(duì)象。例如:
當(dāng)變量oObject設(shè)置為null后,對(duì)第一個(gè)創(chuàng)建的對(duì)象的引用就不存在了。這意味著下次運(yùn)行無(wú)用存儲(chǔ)單元收集程序時(shí),該對(duì)象將被銷毀。
每用完一個(gè)對(duì)象后,就將其廢除,來(lái)釋放內(nèi)存,這是個(gè)好習(xí)慣。這樣還確保不再使用已經(jīng)不能訪問(wèn)的對(duì)象,從而防止程序設(shè)計(jì)錯(cuò)誤的出現(xiàn)。此外,舊的瀏覽器(如IE/Mac)沒(méi)有全面的無(wú)用存儲(chǔ)單元回收程序,所以在卸載頁(yè)面時(shí),對(duì)象可能不能被正確銷毀。廢除對(duì)象和它的所有特性是確保內(nèi)存使用正確的最好方法。
廢除對(duì)象的所有引用時(shí)要當(dāng)心。如果一個(gè)對(duì)象有兩個(gè)或更多引用,則要正確廢除該對(duì)象,必須將其所有引用都設(shè)置為null。
3.2.4  早綁定和晚綁定
所謂綁定(binding),即把對(duì)象的接口與對(duì)象實(shí)例結(jié)合在一起的方法。
早綁定(early binding)是指在實(shí)例化對(duì)象之前定義它的特性和方法,這樣編譯器或解釋程序就能提前轉(zhuǎn)換機(jī)器代碼。在Java和Visual Basic這樣的語(yǔ)言中,有了早綁定,就可以在開(kāi)發(fā)環(huán)境中使用IntelliSense(即給開(kāi)發(fā)者提供其對(duì)象中特性和方法列表的功能)。ECMAScript不是強(qiáng)類型語(yǔ)言,所以不支持早綁定。
另一方面,晚綁定(late binding)指的是編譯器或解釋程序在運(yùn)行前,不知道對(duì)象的類型。使用晚綁定,無(wú)需檢查對(duì)象的類型,只需要檢查對(duì)象是否支持特性和方法即可。ECMAScript中的所有變量都采用晚綁定方法,這樣就允許執(zhí)行大量的對(duì)象操作,而無(wú)任何懲罰。

相關(guān)文章

最新評(píng)論