JavaScript中的函數也是對象,和其餘JS對象同樣也能夠包含方法,其中Call和Apply就是其中比較重要的方法,能夠用來間接的調用函數。這兩個方法容許顯式制定調用所需的this值,也就是說全部函數能夠做爲任何對象的方法來使用,哪怕這個函數不是那個對象的方法。數組
Call方法:
語法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
Apply方法:app
語法:apply([thisObj[,argArray]])函數
Call和Apply方法做用相同,但從以上語法來看,他們傳入的參數方式不一樣,兩個方法第一個參數都是須要調用方法的對象(thisObj),函數所須要的實參Call方法是以列表形式傳入,而Apply方法則須要以數組形式傳入實參。this
實例:spa
1 function People(name, age) { 2 3 this.name = name; 4 this.age = age; 5 this.showName = function () { 6 7 console.log(this.name); 8 9 } 10 } 11 12 13 function Student(name, age) { 14 15 this.name = name; 16 this.age = age; 17 this.showAge = function () { 18 19 console.log(this.age); 20 } 21 } 22 23 24 var people = new People("peopleName", 20); 25 var student = new Student("studentName", 10); 26 27 people.showName.call(student);//輸出studentName
在以上代碼中,一樣能夠使用people.showName.apply(student),輸出結果仍是studentName。code