Javascript 鞏固:阮一峰javascript教程 (2017-1-17)


一個對象的原型鏈上的所有東西都可以被其所有實例繼承哦!        

1.全局對象Global:  這個Global對象跟運行環境有關。在瀏覽器運行環境中。Global就是window對象。在nodejs中。Global對象是global對象。

2.http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html (js獲取頁面元素的位置)

3.其宿主環境:瀏覽器    node               操控瀏覽器的能力     

   腳本語言:不具備開發OS的能力。

4.事件驅動(event-driven)和非阻塞式(non-blocking)設計

5.JavaScirpt是一種動態類型語言,也就是說,變量的類型沒有限制,可以賦予各種類型的值。

6.JavaScript原生提供一個Object對象(注意起首的O是大寫),所有其他對象都繼承自這個對象。 

7.Object()方法,將任意值轉換為對象。

8.Object.keys(),Object.getOwnPropertyNames()     

  遍歷一個對象的屬性(但不包括繼承來的屬性名哦),返回值都是數組, 但后者還返回不可枚舉屬性名。

9.Object.create():生成一個新對象,並該對象的原型。

   Object.getPrototypeOf():獲取對象的Prototype對象。

10.除了Object對象本身的方法,還有不少方法是部署在Object.prototype對象上的,所有Object的實例對象都繼承了這些方法。

     Object實例對象的方法,主要有以下六個。

     a:valueOf():返回當前對象對應的值。

     b:toString():返回當前對象對應的字符串形式。

     c:toLocaleString():返回當前對象對應的本地字符串形式。

     d:hasOwnProperty():判斷某個屬性是否為當前對象自身的屬性,還是繼承自原型對象的屬性。

     e:isPrototypeOf():判斷當前對象是否為另一個對象的原型。

     f:propertyIsEnumerable():判斷某個屬性是否可枚舉。

11.方法覆蓋: 自定義valueOf() 覆蓋Object.prototype.valueOf

12.利用這個特性,可以寫出一個比typeof運算符更准確的類型判斷函數。   

     http://javascript.ruanyifeng.com/stdlib/object.html

13.它的核心思想是將真實世界中各種復雜的關系,抽象為一個個對象,然后由對象之間的分工與合作,完成對真實世界的模擬。

14.“對象”是一個容器,封裝了“屬性”(property) ——》 對象的狀態

                                 和“方法”(method)。 ——》 對象的行為

15.JavaScript語言使用構造函數(constructor)作為對象的模板。       模板 !!!!!!!!!!!!!!

16.為了與普通函數區別,構造函數名字的第一個字母通常大寫。

17.由於在嚴格模式中,函數內部的this不能指向全局對象,默認等於undefined,導致不加new調用會報錯(JavaScript不允許對undefined添加屬性)。

18.new命令的原理

      a: 創建一個空對象,作為將要返回的對象實例。

      b:將這個空對象的原型,指向構造函數的prototype屬性。  

      c:將這個空對象賦值給函數內部的this關鍵字。

      d:開始執行構造函數內部的代碼。

      構造函數執行后,會返回一個對象。

19.為了利用多核CPU的計算能力,HTML5提出Web Worker標准,允許JavaScript腳本創建多個線程,但是子線程完全受主線程控制,且不得操作DOM。所以,這個新      標准並沒有改變JavaScript單線程的本質。

20.瀏覽器假死:單線程    前面任務特耗時,后面的排隊長時間內無法得到執行。  

21.Event Loop機制:

       CPU和IO設備之間的讀取速度差距導致一個任務的耗時更多的取決於IO設備的讀寫。  IO設備拖后腿了!

       CPU完全可以不管IO設備,掛起處於等待中的任務(當前的任務正在進行IO操作),先運行排在后面的任務。等到IO設備返回了結果,再回過頭,把掛起的任務繼續        執行下去。

22. 消息隊列(message queue)運行線程只要發現消息隊列不為空,就會取出排在第一位的那個消息,執行它對應的回調函數

      每條消息與一個回調函數相聯系,也就是說,程序只要收到這條消息,就會執行對應的函數。

23.運行以后的程序叫做“進程”(process)。

24.setTimeout函數用來指定某個函數或某段代碼,在多少毫秒之后執行。它返回一個整數,表示定時器的編號,以后可以用來取消這個定時器。

    setInterval函數的用法與setTimeout完全一致,區別僅僅在於setInterval指定某個任務每隔一段時間就執行一次,也就是無限次的定時執行。

    整數傳入clearTimeout和clearInterval函數,就可以取消對應的定時器。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     

  

    







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM