【javascript笔记】 函数内部属性以及方法
js中 在函数内部 有 两个特殊的对象 arguments 和 this
arguments保存的是函数的参数,类数组的形式
this 保存的当前执行环境,也可以说成web中的上下文
一,(1)先说arguments 参数 ,这个参数有个callee的属性 该属性 是一个指针 指向拥有这个arguments对象的函数
例子:阶乘函数,
function factorial(num){
return num<=1?num*1: num* factorial(num-1)
}
这是一个最简单的递归函数 求阶乘,但是我们若想改变函数的名字,必须连声明和内部函数内容一起改变,这时候 arguments对象的属性 callee用到了
function factorial(num){
return num<=1?num*1: num* arguments.callee(num-1)
}
(2)this函数 不作记录二,每一个函数对象还包含两个非继承而来的方法apply()和 call()方法,这两个方法的用途都是在特定的作用域中调用函数 ,实际上是设置函数体内this对象
的值。
apply 方法 接收两个参数,第一个参数 函数运行的作用域,第二个是参数数组
call 方法和 apply方法是一样的,只是第二个参数 传递函数参数的时候别绪逐个的列举出来 .
例子来了:
window.color='red';
var o={ color:'blue};
function sayColor(){
alert(this.color);
}
sayColor.call(o) ; //输出结果为blue
sayColor.call(window); //输出结果为red