当前位置:首页 » JavaScript技术

javascript:this、function#call以及function#apply

2014-01-03 11:21 本站整理 浏览(15)

function a(){
   console.log(window == this) //true 
}
a()
上面代码中当函数被调用时this的值是全局对象,在浏览器中,就是window对象

使用.call与.play方法可以改变this的值

function a(){
  this.a=='b'; 
}

console.log(a.call({a:'b'}))  //true
其实call与apply的区别主要在于,两者接受的参数方式不同。.call接受的参数是参数列表。.apply接受的是一个参数数组:

function foo(a,b){
  console.log(a=='1');
  console.log(b=='2');
}
foo.apply(this,[1,2]);  //true
foo.call(this,1,2);    //true