041_对象的创建和销毁
1. 對(duì)象的創(chuàng)建和銷(xiāo)毀都在JavaScript執(zhí)行過(guò)程中發(fā)生, 理解這種方式的含義對(duì)理解整個(gè)語(yǔ)言至關(guān)重要。
2. 聲明和實(shí)例化
2.1. 對(duì)象的創(chuàng)建方式是用關(guān)鍵字new后面跟上實(shí)例化的類(lèi)的名字:
var obj = new Object(); var str = new String();2.2. 第一行代碼創(chuàng)建了Object類(lèi)的一個(gè)實(shí)例, 并把它存儲(chǔ)到變量obj中。第二行代碼創(chuàng)建了String類(lèi)的一個(gè)實(shí)例, 把它存儲(chǔ)在變量str中。
3. 對(duì)象廢除
3.1. JavaScript擁有無(wú)用存儲(chǔ)單元收集程序(garbage collection routine), 意味著不必專(zhuān)門(mén)銷(xiāo)毀對(duì)象來(lái)釋放內(nèi)存。當(dāng)再?zèng)]有對(duì)對(duì)象的引用時(shí), 稱(chēng)該對(duì)象被廢除(dereference)了。運(yùn)行無(wú)用存儲(chǔ)單元收集程序時(shí), 所有廢除的對(duì)象都被銷(xiāo)毀。每當(dāng)函數(shù)執(zhí)行完它的代碼, 無(wú)用存儲(chǔ)單元收集程序都會(huì)運(yùn)行, 釋放所有的局部變量, 還有在一些其他不可預(yù)知的情況下, 無(wú)用存儲(chǔ)單元收集程序也會(huì)運(yùn)行。
3.2. 把對(duì)象的所有引用都設(shè)置為null, 可以強(qiáng)制性地廢除對(duì)象。例如:
var obj = new Object; // do something with the object here obj = null;3.3. 當(dāng)變量obj設(shè)置為null后, 對(duì)第一個(gè)創(chuàng)建的對(duì)象的引用就不存在了。這意味著下次運(yùn)行無(wú)用存儲(chǔ)單元收集程序時(shí), 該對(duì)象將被銷(xiāo)毀。
3.4. 每用完一個(gè)對(duì)象后, 就將其廢除, 來(lái)釋放內(nèi)存, 這是個(gè)好習(xí)慣。這樣還確保不再使用已經(jīng)不能訪(fǎng)問(wèn)的對(duì)象, 從而防止程序設(shè)計(jì)錯(cuò)誤的出現(xiàn)。此外, 舊的瀏覽器(如: IE/MAC)沒(méi)有全面的無(wú)用存儲(chǔ)單元收集程序, 所以在卸載頁(yè)面時(shí), 對(duì)象可能不能被正確銷(xiāo)毀。廢除對(duì)象和它的所有特性是確保內(nèi)存使用正確的最好方法。
總結(jié)
以上是生活随笔為你收集整理的041_对象的创建和销毁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。