介绍js中call方法和apply方法的用法和区别

call方法:

介绍:调用一个对象的一个方法,以另一个对象替换当前对象。简单点说就是可以替换函数内的this对象。

语法:Fun.call([thisObj,arg1, arg2,….,argN);

参数:thisObj:将this对象替换为该对象;

arg:待传入的参数

样例:

<input type="text" id="myText"   value="input text">
<script>
function Obj() {
    this.value="对象!";
}
var value="global 变量";
function Fun1() {
    alert(this.value);
}
window.Fun1();   //global 变量
Fun1.call(window);  //global 变量
Fun1.call(document.getElementById('myText'));  //input text
Fun1.call(new Obj());   //对象!
</script>

apply方法:

介绍:功能与call方法相同,其中第一个参数也相同都是thisObj,唯一的区别就是传入参数不同,call方法中依次传入参数arg1,arg2…..argN,apply是传入一个参数数组[arg1,arg2….argN]

语法:Fun.apply(thisObj,[arg1,arg2,….,argN]);

参数:thisObj:同call方法;

[arg1,arg2,….,argN]:带传入的参数数组

apply相对call方法有一个好处就是可以直接传入函数对象arguments作为参数数组

样例:

function Fun1(name, age) {
    alert(name + '=====' + age); 
}
function Fun(name, age) {
    Fun1.apply(this, arguments);
}
Fun('a', 1); //a=====1