关于JavaScript中apply与call的用法意义及区别

来源:互联网 发布:linux查看80端口被占用 编辑:程序博客网 时间:2024/06/07 09:34

1. call方法,调用一个对象的一个方法,以另一个对象替换当前对象。

var name = "Window";function planA(){    this.name = "I'm A";};function planB(){    this.name = document.getElementById("username").value;};function execute(){    alert(this.name);};execute(); // 直接调用,this指向全局变量,打印Windownew execute();  //造一个对象,this指向当前对象,打印 undefinedexecute.call(new planA());  //call方法,调用一个对象的一个方法,以另一个对象替换当前对象,打印 I'm Aexecute.call(new planB());    //打印 I'm textfield

2. call方法与apply方法用法基本相同,第二个参数不同,apply传入的是一个参数数组。

var funObj = new function(){ this.name = "I'm funObj"; };function commFun(x,y){    alert(this.name);    alert("x="+x+";y="+y);};commFun.call(funObj,'x','y');commFun.apply(funObj,['x','y'])  //apply方法,第二个参数为数组类型