es五、es6函數調用

ES5中函數的4種調用

在ES5中函數內容的this指向和調用方法有關app

1 函數調用模式

包括函數名()和匿名函數調用,this指向window函數

 function getSum() {
    console.log(this) //window
 }
 getSum()
 
 (function() {
    console.log(this) //window
 })()
 
 var getSum=function() {
    console.log(this) //window
 }
 getSum()

2 方法調用

對象.方法名(),this指向對象this

var objList = {
   name: 'methods',
   getSum: function() {
     console.log(this) //objList對象
   }
}
objList.getSum()

3 構造器調用

new 構造函數名(),this指向構造函數spa

function Person() {
  console.log(this); //指向構造函數Person
}
var personOne = new Person();

4 間接調用

利用call和apply來實現,this就是call和apply對應的第一個參數,若是不傳值或者第一個值爲null,undefined時this指向windowcode

function foo() {
   console.log(this);
}
foo.apply('我是apply改變的this值');//我是apply改變的this值
foo.call('我是call改變的this值');//我是call改變的this值

 

ES6中函數的調用

箭頭函數不能夠看成構造函數使用,也就是不能用new命令實例化一個對象,不然會拋出一個錯誤
箭頭函數的this是和定義時有關和調用無關
調用就是函數調用模式對象

(() => {
   console.log(this)//window
})()

let arrowFun = () => {
  console.log(this)//window
}
arrowFun()

let arrowObj = {
  arrFun: function() {
   (() => {
     console.log(this)//arrowObj
   })()
   }
 }
 arrowObj.arrFun();
相關文章
相關標籤/搜索