apply,call和bind的用法區別

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>apply-call-bind用法</title>
</head>
<body>
  <script>
    // apply B.apply(A, arguments);即A對象應用B對象的方法 this指向A
    // call B.call(A, args1,args2);即A對象調用B對象的方法 this指向A
    // apply和call的功能是一樣的,只是傳入的參數列表形式不同 
    // bind 最簡單的用法是創建一個函數,使這個函數不論怎麼調用都有同樣的this值
    this.num = 9;
    var mymodule = {
      num: 81,
      getNum: function () { return this.num; }
    };

    console.log()
    mymodule.getNum(); // 81 this指向 mymodule

    var getNum = mymodule.getNum;
    getNum(); // 9, 因爲在這個例子中,"this"指向全局對象

    // 創建一個'this'綁定到module的函數
    var boundGetNum = getNum.bind(mymodule); // this指向mymodule
    boundGetNum(); // 81
  </script>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章