W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
對象的創(chuàng)建和銷毀都在 JavaScript 執(zhí)行過程中發(fā)生,理解這種范式的含義對理解整個語言至關重要。
對象的創(chuàng)建方式是用關鍵字 new 后面跟上實例化的類的名字:
var oObject = new Object(); var oStringObject = new String();
第一行代碼創(chuàng)建了 Object 類的一個實例,并把它存儲到變量 oObject 中。第二行代碼創(chuàng)建了 String 類的一個實例,把它存儲在變量 oStringObject 中。如果構造函數(shù)無參數(shù),括號則不是必需的。因此可以采用下面的形式重寫上面的兩行代碼:
var oObject = new Object; var oStringObject = new String;
在前面的章節(jié)中,我們介紹了引用類型的概念。在 ECMAScript 中,不能訪問對象的物理表示,只能訪問對象的引用。每次創(chuàng)建對象,存儲在變量中的都是該對象的引用,而不是對象本身。
ECMAScript 擁有無用存儲單元收集程序(garbage collection routine),意味著不必專門銷毀對象來釋放內(nèi)存。當再沒有對對象的引用時,稱該對象被廢除(dereference)了。運行無用存儲單元收集程序時,所有廢除的對象都被銷毀。每當函數(shù)執(zhí)行完它的代碼,無用存儲單元收集程序都會運行,釋放所有的局部變量,還有在一些其他不可預知的情況下,無用存儲單元收集程序也會運行。
把對象的所有引用都設置為 null,可以強制性地廢除對象。例如:
var oObject = new Object; // do something with the object here oObject = null;
當變量 oObject 設置為 null 后,對第一個創(chuàng)建的對象的引用就不存在了。這意味著下次運行無用存儲單元收集程序時,該對象將被銷毀。
每用完一個對象后,就將其廢除,來釋放內(nèi)存,這是個好習慣。這樣還確保不再使用已經(jīng)不能訪問的對象,從而防止程序設計錯誤的出現(xiàn)。此外,舊的瀏覽器(如 IE/MAC)沒有全面的無用存儲單元收集程序,所以在卸載頁面時,對象可能不能被正確銷毀。廢除對象和它的所有特性是確保內(nèi)存使用正確的最好方法。
注意:廢除對象的所有引用時要當心。如果一個對象有兩個或更多引用,則要正確廢除該對象,必須將其所有引用都設置為 null。
所謂綁定(binding),即把對象的接口與對象實例結合在一起的方法。
早綁定(early binding)是指在實例化對象之前定義它的屬性和方法,這樣編譯器或解釋程序就能夠提前轉(zhuǎn)換機器代碼。在 Java 和 Visual Basic 這樣的語言中,有了早綁定,就可以在開發(fā)環(huán)境中使用 IntelliSense(即給開發(fā)者提供對象中屬性和方法列表的功能)。ECMAScript 不是強類型語言,所以不支持早綁定。
另一方面,晚綁定(late binding)指的是編譯器或解釋程序在運行前,不知道對象的類型。使用晚綁定,無需檢查對象的類型,只需檢查對象是否支持屬性和方法即可。ECMAScript 中的所有變量都采用晚綁定方法。這樣就允許執(zhí)行大量的對象操作,而無任何懲罰。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: