- 1、《js高級程序設計》中組合繼承(P169)部分例子中的,SubType.prototype.constructor = SubType;的作用
- 2、《JavaScript高級程序設計》什麼時候出版
- 3、求javascript 中文參考手冊
- 4、javascript頻繁創建銷毀對象會不會給瀏覽器造成負擔
- 5、es是js的規格嗎?
- 6、求《JavaScriptDOM高級程序設計》全文免費下載百度網盤資源,謝謝~
這個是為了讓subType的構造函數重新指回這個類本身,否則的話它會變成之前繼承的那個類的構造函數。
在後面再調用的時候可能會出現意想不到的情況
第一版,2006年《JavaScript高級程序設計》人民郵電出版社出版;
第二版,2010年人民郵電出版社出版;
第三版, 2012-3-29人民郵電出版社出版;
第四版,亞馬遜預售 18年 1月份吧 第4版出版;
而《JavaScript權威指南》應該出到了第七版,我buy的是第六版。
這是我收藏最久,用得最多的下載電腦資料的網站,的確是太好了。呵。這上面全是書籍,並且可以下載的。
如果你想要視頻。可以點上面的「視頻教學」。
希望我的推薦對你有幫助哦。呵。。
問題不大,
銷毀不掉問題才大,
我以前做過一個項目,每一步每一個按鈕都是Ajax性能什麼的倒是沒發現什麼問題全看網速,但是,問題出在:在IE下(其他瀏覽器沒測),每次刷新都會增加幾十M內存的佔用,多刷新幾次內存就提示「虛擬內存不足」什麼的,只能關閉瀏覽器了。就是js對象都沒銷毀掉。
樓上抄了一段書,我也把我看的發出來吧:
(好多字,沒辦法,對付看吧,我已經精簡過了)
(一般用2種方式:標記清除,引用計數)
以下內容來自《javascript高級程序設計(第二版)》
4.3垃圾收集器:
垃圾收集機制的原理其實很簡單:找出那些不再繼續使用的變量,然後釋放其內存。
4.3.1標記清除:
javascript中最常用的垃圾收集方式是「標記清除」(mark-and-sweep)。當變量進入環境(例如,在函數中聲明一個變量)時,就將這個變量標記為「進入環境」。
……
當變量離開環境時。則將其標記為「離開環境」。
垃圾收集器在運行的時候會給存儲在內存中的所有變量都加上標記。然後,它會去掉環境中的變量以及被環境中的變量引用的變量的標記。而在此之後仍然帶有標記的變量將被視為準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。最後垃圾收集器完成「內存清理」工作,銷毀那些標記的值並回收他們所佔用的內存空間。
4.3.2引用計數:
另一種不太常見的垃圾收集策略叫做「引用計數」(reference counting)。引用計數的含義是跟蹤記錄每個值被引用的次數。當聲明一個變量並將一個引用類型值賦給該變量時,則這個值的引用次數就是1。如果同一個值又被賦給另一個變量,則該引用次數加1。相反,如果包含對這個值引用的變量又取得了另外一個值,則這個值的引用次數減1.當這個值的引用次數變成0時,則說明沒辦法再訪問這個值了,因此回收它。
Netscape Navigator 3.0 是最早使用引用計數策略的瀏覽器,但很快它就遇到了一個嚴重的問題:循環引用。
function problem(){
var objectA = new Object();
var objectB = new Object();
objectA.someOtherObject = objectB;
objectB.anotherObject = objectA;
}
兩種引用的次數都是2。
為此:Netscape在 Navigator 4.0中放棄了引用計數方式,轉而採用標記清除來實現垃圾回收。
IE中有一部分並不是原生javascript對象。例如,其BOM和DOM中的對象就是使用C++以COM(Component Object Model,組建對象模型)對象的形式實現的,而COM對象的垃圾收集機制採用的就是引用計數策略。因此,即使IE的javascript引擎是使用標記清除策略來實現的,但javascript訪問的COM對象依然是基於引用計數策略的。
……
var element = document.getElementById(‘some_element’);
var myObject = new Object();
myObject.element = element;
element.someObject = myObject;
……
為了避免類似這樣的循環引用問題,最好是在不使用它們的時候手工斷開原生javascript對象與DOM元素之間的鏈接。例如,
myObject.element = null;
element.someObject = null;
將變量設置為null意味着切斷變量與它此前引用的值之間的鏈接。當垃圾收集器下次運行時就會刪除這些值並回收它們佔用的內存。
4.3.3性能問題:
垃圾收集器是周期運行的,而且如果為變量分配的內存數量很客觀,那麼回收工作量也是相當大的。
……
IE的垃圾收集器是根據內存分配量運行的,具體一點說就是256個變量、4096個對象(或數組)字面量和數組元素(slot)或者64KB的字符串。達到上述任何一個臨界值,垃圾收集器就會運行。如果一個腳本中包含那麼多變量,那麼該腳本可能會在其生命周期中一直保有那麼多變量。而這樣一來,垃圾收集器就不得不頻繁第運行。結果,由此引發的嚴重性能問題促使IE7重寫了其垃圾收集器例程(臨界值動態修改,一次回收中如果回收的內存小於15%,臨界值就翻倍、如果回收大於85%,臨界值就重置為默認值)。
4.3.4管理內存:
確保佔用最少的內存可以讓頁面獲得更好的性能。而優化內存佔用的最佳方式,就是為執行中的代碼只保存必要的數據。一旦數據不在有用,最好通過將其值設置為null來釋放其引用——這個做法叫做「解除引用」(dereferencing)
……
不過,解除一個值的引用並不意味着自動回收該值所佔用的內存。解除引用的真正作用是讓值脫離執行環境,以便垃圾收集器下次運行時將其回收。
準確的說:es(ECMAScript)是js(javascript)的標準。
JavaScript是語言,而ECMAScript(即ECMA-262,ECMA是歐洲計算機製造商協會)是為了規範JS而制定的標準,ECMAScript有不同版本,最近的版本是第10版,發佈於2019.6。
完整的JavaScript的實現包含以下幾個部分:
核心(ECMAScript):由ECMA-262定義並提供核心功能。
文檔對象模型(DOM):提供與網頁內容交互的方法與接口。
瀏覽器對象模型(BOM):提供與瀏覽器交互的方法與接口。
可以用下面這張圖進行粗略的記憶
具體來說,ECMA-262定義了一門語言的如下部分
語法
類型
語句
關鍵字
保留字
操作符
全局對象
ECMA-262第6版,俗稱ES6、ES2015或ES Harmony(和諧版),於2015年6月發佈。這一版包含了大概這個規範有史以來最重要的一批增強特性。ES6正式支持了類、模塊、迭代器、生成器、箭頭函數、期約、反射、代理和眾多新的數據類型。
DOM Level 1 在1998.10成為W3C的推薦標準。它由DOM Core 和DOM HTML兩個部分組成。DOM Core提供了一種映射XML文檔,從而方便訪問和操作文檔任意部分的方式;DOM HTML擴展了前者,並增加了特定於HTML的對象和方法。
DOM Level 2 新增了以下模塊,以支持新的接口。
DOM視圖:描述追蹤文檔不同視圖(如應用CSS樣式前後的文檔)的接口。
DOM事件:描述事件及事件處理的接口。
DOM樣式:描述處理元素CSS樣式的接口。
DOM遍歷和範圍:描述遍歷和操作DOM樹的接口。
DOM Level 3 增加了以統一的方式加載和保存文檔的方法(包含在一個叫DOM Load and Save的新模塊中),還有驗證文檔的方法(DOM Validation)。
DOM Level 4 新增Mutation Observers,替代 了Mutation Events .
BOM 主要針對瀏覽器窗口和子窗口(frame),不過人們通常會把任何特定於瀏覽器的擴展都歸在 BOM 的範疇內。 下面就是這樣一些擴展。
彈出新瀏覽器窗口的能力;
移動、縮放和關閉瀏覽器窗口的能力;
navigator對象,提供關於瀏覽器的詳盡信息;
location對象,提供瀏覽器加載頁面的詳盡信息;
screen對象,提供關於用戶屏幕分辨率的詳盡信息;
performance對象,提供瀏覽器內存佔用、導航行為和時間統計的詳盡信息;
對cookie的支持;
其他自定義對象,如XMLHttpRequest和IE的ActiveXObject。
出處:《JavaScript高級程序設計(第4版)》Matt Frisbie著 李松峰譯
《JavaScript DOM高級程序設計》百度網盤pdf最新全集下載:
鏈接:
?pwd=5kvs 提取碼:5kvs
簡介:JavaScript DOM高級程序設計注重理論與實踐的結合,全面講述高級的DOM腳本編程。全書分為3個部分每部分的 後一章都為案例研究,將學到的內容應用於實踐。通過學習全書內容,讀者將能構建起屬於自己的DOM實用方法庫。本書適合有Web開發和設計經驗的讀者閱讀和參考。
原創文章,作者:LYXTV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/126426.html