arguments
- 类数组对象,包含传入函数中的所有参数
- arguments的主要用途是保存函数参数,但这个对象还有一个名叫 callee 的属性
- 该属性是一个指针,指向拥有这个argument对象的函数
经典阶乘Demo
/**
* @description 经典的阶乘函数
* @param {Number}
* 存在的问题
* 执行函数与函数名factorial 紧紧耦合
*/
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * factorial(num - 1);
}
}
消除函数的强耦合
/**
* @description 使用arguments.callee
* @param {Number}
* 消除上面的紧密耦合现象
*/
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
this
- 函数执行的环境对象
- 全局中this的引用对象是window
/**
* @description this对象用例
*/
var color = "red";
var o = { color: "blue" };
function sayColor() {
alert(this.color);
}
sayColor(); //red
o.sayColor = sayColor;
o.sayColor(); //blue
caller
/**
* caller
* @return {EventString} 返回调用函数结构体
*/
function outer() {
inner();
}
function inner() {
alert(inner.caller)
}
outer()
/**
* @description 松散耦合
* arguments.callee.caller
*/
function outer() {
inner();
}
function inner() {
alert(arguments.callee.caller)
}
outer()
网友评论