介绍:
- 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,改变了函数的作用域