ES5中函數的4種調用
在ES5中函數內容的this指向和調用方法有關
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指向對象
var objList = { name: 'methods', getSum: function() { console.log(this) //objList對象 } } objList.getSum()
3 構造器調用
new 構造函數名(),this指向構造函數
function Person() { console.log(this); //指向構造函數Person } var personOne = new Person();
4 間接調用
利用call和apply來實現,this就是call和apply對應的第一個參數,如果不傳值或者第一個值為null,undefined時this指向window
function foo() { console.log(this); } foo.apply('我是apply改變的this值');//我是apply改變的this值 foo.call('我是call改變的this值');//我是call改變的this值
ES6中函數的調用
箭頭函數不可以當作構造函數使用,也就是不能用new命令實例化一個對象,否則會拋出一個錯誤
箭頭函數的this是和定義時有關和調用無關
調用就是函數調用模式