this:this對象是指在運行時期基於運行環境所綁定的也就是說this老是指向調用者數組
代碼說明:app
var k=10; function test(){ this.k=20; } test();//test()<===>window.test() alert(test.k);//undefined alert(k)//20 /*說明:this:this對象是指在運行時期基於運行環境所綁定的也就是說this老是指向調用者; 代碼分析: 1.var k=10;至關於window.k=10; 2.test函數中的this指向的是全局做用域中的window對象,因此此時this.k等價於window.k, 因爲this.k從新賦值了20,因此此時k就等於20, 而test.k因爲是個函數的局部變量, 因此,test.k並無賦值,因此彈出undefined */
call,apply方法:函數
代碼說明:this
//簡單用法:綁定一些函數,用於傳參調用; function add(x,y){ return x+y; } function call1(a,b){ //在test函數中調用add方法而且將test函數的參數傳遞給add方法 return add.call(this,a,b); } call1(1,2);//返回值爲3 function apply1(c,d){ //apply方法和call方法運行效果是同樣的,可是call傳遞普通參數,可是,apply傳遞是一個數組; return add.apply(this,[c,d]); } apply1(1,2);//返回值爲3 //擴充函數做用域實例 window.color="red"; var obj={color:"green"}; function showColor(){ alert(this.color); } showColor.call(this);//red;this就是window; showColor.apply(obj);//green,由於綁定的是obj,所以改變了函數做用域