js繼承與閉包(筆記)

來源:互聯網
上載者:User

標籤:apply   取值   原理   屬性   產生   new   prot   記憶體   它的   

1、一切參考型別都是對象,對象是屬性的集合;typeof null === ‘object‘(例外);

2、對象都是通過函數建立來的,比如var obj = new Object();typeof Object === ‘function‘; 

3、函數有隱藏屬性prototype,對象有隱藏屬性__proto__;

     Func.prototype.constructor === Func;

     func.__proto__ === Func.prototype;

4、對象的__proto__屬性都指向建立它的函數的prototype;

    Object.prototype.__proto === null;

    Object.__proto__ === Function.prototype;

    Function.__proto__ === Function.prototype;

    Function.prototype.__proto === Object.prototpe;

5、instanceof 其實是一種繼承關係,A instanceof B(沿著A的__proto__找,同時沿著B的prototype找,如果最終能找到同一個飲用,就true);

6、訪問一個對象的屬性,如果自身沒有,則沿著__proto__向上找,這就是原型鏈;

7、var obj = {},arr = [];

     obj.toString === ‘[object Object]‘;

     arr.toString === ‘‘;  說明Array.prototype.toString方法被改了;

8、處於活動狀態的執行內容只有一個;

     範圍是一個抽象的概念,其中沒有變數,要通過範圍對應的執行內容來擷取變數的值,且不同的調用會產生不同的上下文;

     函數是在定義時就確定了函數體內部自由變數的範圍;

     除了全域範圍,只有函數是可以建立一個獨立的範圍;

     要區一個變數的值,要到建立它的函數的那個範圍中取值,這就是所謂的靜態範圍;

     在A範圍中使用的變數a,卻沒在A中聲明,則稱a是自由變數;

9、1?? 函數作為建構函式用,this指向new出來的對象;

     2?? 函數作為對象的一個屬性被調用,this指向該對象;

     3?? 在call、apply中,this指向傳入的對象;

     4?? 全域調用普通函數,this指向window;

10、閉包特性:函數嵌套函數;函數內部可引用外部變數;變數不會被回收。

       閉包是指有權訪問另一個函數範圍中的變數的函數,閉包缺點是容易記憶體泄露。

       記憶體回收原理:在javascript中,如果一個對象不再被引用,那麼這個對象就會被GC回收; 如果兩個對象互相引用,而不再被第3者所引用,那麼這兩個互相引用的對象也會被回收。

js繼承與閉包(筆記)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.