class 用法 函數變量的做用域

  函數變量的做用域es6

    1. 函數體內聲明的變量函數

    2. 參數中的變量this

      沒有賦值的  function fn(a){}prototype

      賦值的,值不是變量  function fn(a=45){}設計

      賦的值爲變量  function fn(a=m){}對象

    參數執行的時候,先給形參賦值,形參也是私有變量,若是給形參賦的值也是變量,先看這個變量是否是私有的(不是針對函數體內,只針對形參,還跟形參的順序有關),是私有的直接使用,繼承

  若是不是私有的,變量找全局的,若是全局沒有報錯接口

  注意:給形參的賦的變量於形參同名  function fn(a=a)  會出現暫時性死區  由於:形參沒有變量提高作用域

  class 類的由來字符串

    class 的做用:

      1. 定義類的

      2. 沒有變量提高

  案例:

    class Person{

      constructor(){

        // constructor 的做用:添加的私有屬性 都在這裏

      }

      fn(){

        // 默認原型上的屬性都在這裏

      }

      static mn(){

        // 類上面的方法 須要經過 static 來定義;對象訪問不到的方法

      }

    }

  注意: 用類 class 上必須寫 constructor 

  class 

    1. 在 class 類 添加的屬性都是在 原型 prototype 上添加的

    2. new 實例的時候,其實就是調用構造函數這個方法

    3. 類的本質,就是一個函數

    4. 類中的 this 指向實例對象

    5. 添加的私有屬性都在構造函數中 constructor 添加

    6. 每一個構造方法都會默認返回實例對象 this ,若是人爲改變 return ,返回值返回的基本數據類型,如 字符串、數字等不會改變,若是返回的是引用數據類型,那麼return this 就會失效,

      變成的你的返回結果

    7. 靜態的方法,在方法名前面加上 static 關鍵字,那麼這個方法就變成類的私有方法,就得用 類.方法()

  繼承:extends

    子類能夠繼承父類,使用 extends 關鍵字

    代碼塊須要使用 super 關鍵字

    constructor 子類構造函數第一行,必須是 super(),super 關鍵字,在構造函數裏面,表明父類構造函數,

    若是在原型函數裏,super 表明父類的原型

    在靜態方法中,super  表明父類自己;

  案例:

    class Person{

      constructor(){}

      fn(){}

      static mn(){}

    }

    class Son extends Person{

      constructor(){

        super()  //必須調用,表明

      }

      fn(){

        super  // 表明父類原型的方法

      }

      static mn(){

        super  // 表明父類的私有方法 用 static 定義的方法

      }

    }

  若是 子類構造函數 不使用 super() 那麼他的構造函數裏的 this 不起做用,子類的 this 要經過父類的構造函數進行塑造;

  因此,在子類的 constructor 使用 this 前,必定要調用 super() 

  supper 既能夠充當函數,又能夠充當對象;

  充當函數時,只能在子類構造函數中使用,且必須放在第一行調用,指向父類構造函數

  充當對象中

    放在普通函數中,super 指向父類的原型

    放在靜態方法中,super 執行當前父類自己

  只有 super 調用以後,子類纔可使用 this 關鍵字,指向子類的實例對象;

  module  (es6 模塊設計思想,儘可能保持靜態化)

    es6 使用 export 對外暴露接口

      使用 iimport 引入其餘模塊

  import 聲明的變量,必須放在 {} 內,變量名必須和暴露的接口名一致;

  exprot var a="hello world"  (不建議)

  var a="hello world";   exprot {a}  (建議)

  引入接口

  import {a} from "文件名"

  暴露多個變量,必須加 {}

  模塊文件暴露什麼,引入文件接收什麼 (例如:export {a} 爲一個對象,那麼 import {a} from "文件名" 的 a 就是一個對象)

  注意:

    export 暴露必須是一個變量,或變量集合

    不能直接暴露一個數據,例如:export 12 這種寫法就是錯的

  若是不想讓別人知道你暴露的什麼接口,咱們可使用 as 關鍵字

  案例:

    var a = "hello world";

    export {a as ben};  ben 和 a 都 表明了這個字符串

    import {ben} from "文件名"

    console.log(ben);  // hello world

  export default 介紹

  案例:

    a.js

    var a="hello world"

    export default a;

    b.js

    import haha from "a.js";

    console.log(haha)  //hello world;

  總結:

    export 和 import 時一對,兩者後面都必須帶 {} ,花括號裏面的變量名,保持一致

    export default 和 import 也是一對,兩者後面不用帶 {} ,名字不須要一致;

    export default 一次只能對外輸出一個

    exprot default 本質是將值賦給變量 default ,因此,default 後面不能對變量在次聲明;

    export default var a       x   這種寫法錯的

    export default function fn   v   這種寫法能夠

    export default 的本質:

    export {a as default}  default 能夠是任何變量,因此便能實現 export default 

相關文章
相關標籤/搜索