介紹:
- this:引用環境執行的環境對象
- arguments:一個類數組對象,它包含傳入函數的所以參數
- callee:arguments對象的一個屬性,該屬性是一個指針,指向擁有arguments對象的函數
- caller:保存著調用當前函數的函數引用
- apply()方法:第一個參數是作用域,第二個參數是Array實例或者arguments對象
- call()方法:第一個參數是作用域,第二個參數是數組枚舉
實例:
//this
window.color = "red"; // 全局中定義了一個"color",值為"red"
var o = { color : "blue" }; // 定義了一個對象o
function sayColor() { // 定義了一個方法 sayColor()alert ( this.color );
}sayColor(); // "red",在全局中執行,所以this指向的作用域是window
o.sayColor = sayColor;
o.sayColor(); // "blue", 作用域變成o,this引用的對象是o
//callee、caller
function outer(){ // inner.caller指向outerinner();
}
function inner(){ // arguments.callee 指向inner console.log(arguments.callee.caller);
}
outer();
//使用appply擴充函數運行的作用域
window.color = "red";
var o = {color: "blue"};function sayColor(){alert(this.color);sayColor(); // "red"
sayColor.call(this); // "red"
sayColor.call(window); // "red"
sayColor.call(o); // "blue" ,傳入了o,改變了函數的作用域