標籤:
apply()與call()都是都是繼承另一個對象的方法,繼承另一個對象的變數。
例:
function Person(name,age){this.age=age;this.name=name;}function student(name,age,grade){this.grade=grade;Person.apply(this,arguments);}var student =new student("xiaowu","12","三年級");alert(student.name+student.age+student.grade)
function Person(name,age){this.age=age;this.name=name;}function student(name,age,grade){this.grade=grade;Person.call(this,name,age);}var student =new student("xiaowu","12","三年級");alert(student.name+student.age+student.grade)
輸出結果都為:xiaowu12三年級
區別:apply()當傳入的參數是數組並且順序與所調用的對象的參數順序一致。
call()直接在指定參數的順序。
其他用法:
js中Math.max()取兩個數中較大的數,無法比較數組中最大的數,使用aplly()就可以了
var arr = new Array(2,45,6,1,97,22,1);var MaxNum = Math.max.apply(null,arr)alert(MaxNum);
輸出結果:97
js中push()向數組的末尾添加一個或多個元素,並返回新的長度。使用apply直接添加一個數組。
var arr1 = new Array("xiaoming","12");var arr2 = new Array("三年級","男");Array.prototype.push.apply(arr1,arr2);alert(arr1);
輸出結果:
apply()與call()