浅谈javascript 函数内部属性
在函数内部有两个特殊的属性:arguments 和 this。arguments是一个类数组对象,包含传入的所有参数,
但是这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。
请看经典的阶乘函数例子:
function Factorial(num) { if (num <= 1) { return 1; } else { return num * Factorial(num - 1); } } function Factorial(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num - 1); } }
使用第一种方式是没有错的,但是耦合性太高,不太好,函数名改变之后,内部的函数名也要改变
第二种方式就是低耦合的做法,无论函数名怎么改变都不会影响函数执行。
this引用的是函数据以执行的环境对象,或者也可以说是this值
window.color = "red"; var o = {color: "blue"}; function sayColor() { alert(this.color); } sayColor();//red o.sayColor = sayColor; o.sayColor();//blue
caller属性,保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为Null
function outer() { innter(); } function innter(){ //alert(innter.caller);//耦合性太高 alert(arguments.callee.caller); } outer();
以上就是javascript函数内部属性的全部内容了,希望小伙伴们能够喜欢
DOM基础教程之使用DOM设置文本框
1.控制用户输入的字符个数对于单行文本框和密码输入框,可以利用maxlength属性控制用户输入的字符个数。对于多行文本,maxlength为自定义属性,其值最
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf(),这样用起来就
JavaScript学习笔记之基础语法
JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括:各种算术运算符、比较运算符、逻辑运算符;ifelse语句、switch语句