js高級程序設計第4電子版(js高級程序設計 第4版和第三版)

  • 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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LYXTV的頭像LYXTV
上一篇 2024-10-03 23:08
下一篇 2024-10-03 23:08

相關推薦

  • Python基礎教程第三版PDF下載

    熟練掌握Python編程語言可以讓你輕鬆地用代碼解決很多問題,Python基礎教程第三版是一本適合初學者的Python教程。本文將從幾個方面詳細介紹Python基礎教程第三版PDF…

    編程 2025-04-29
  • Python計算機語言程序設計用法介紹

    Python是一種高級編程語言,其設計目的是讓程序員能夠在編寫代碼時更加關注算法的設計,而不必過多地考慮語言細節。Python被廣泛應用於網站開發、數據科學、人工智能、機器學習等各…

    編程 2025-04-28
  • Python元祖排序:從基礎知識到高級應用

    Python元祖是一種不可變序列,通常用於將一組數據綁定在一起。元祖之間經常需要排序,本文將從基礎知識到高級應用,為你詳細講解Python元祖排序。 一、排序方法 Python提供…

    編程 2025-04-28
  • 使用面向對象程序設計方法改寫猜數字遊戲Python程序

    本文將從以下多個方面對猜數字遊戲程序功能要求,使用面向對象程序設計方法改寫該程序Python做詳細的闡述。 一、遊戲規則 1、遊戲開始時,程序隨機生成一個 1 到 100 之間的整…

    編程 2025-04-28
  • Isodata算法算高級算法嗎?

    是的,Isodata算法算得上是一種高級算法。 一、Isodata算法的定義 Isodata算法是一種基於聚類的圖像分割算法,廣泛應用於圖像處理領域。 該算法首先對圖像進行預處理,…

    編程 2025-04-27
  • 匯率兌換程序和溫度轉換程序設計

    這篇文章將從多個方面詳細闡述如何設計匯率兌換程序和溫度轉換程序。這些程序可以幫助人們更方便地計算貨幣匯率和溫度轉換,對於需要頻繁出差或者經常進行氣象預報的人來說,這些程序將非常有用…

    編程 2025-04-27
  • Python高級用法:re.split函數雙空格

    本文將詳細介紹Python中re模塊中的split函數雙空格的用法及其應用場景。 一、split函數雙空格概述 re.split() 是 Python re(正則表達式) 模塊中的…

    編程 2025-04-27
  • Python程序設計題庫博客園

    Python程序設計題庫博客園是一個開發者可以通過該平台進行學習和檢測自身能力的編程題目練習平台。其提供了一些Python的基礎編程技能練習,對於想要學習Python編程,提高編程…

    編程 2025-04-27
  • CCF中學生計算機程序設計全面解析

    CCF(中國計算機學會)中學生計算機程序設計是一個旨在培養中學生計算思維和編程能力的活動。自2000年開始,每年舉辦一次,分為入門篇、基礎篇、提高篇、專業篇四個階段,以及最新版和答…

    編程 2025-04-23
  • Javascript高級程序設計PDF的探討

    一、Javascript語言基礎 Javascript作為一門編程語言,具有獨特的特點和語法結構。在學習Javascript時,我們需要掌握它的語言基礎,如變量、數據類型、運算符等…

    編程 2025-04-12

發表回復

登錄後才能評論