浏览 2889 次
锁定老帖子 主题:js中的函数
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-18
最后修改:2011-06-24
概括: JavaScript中的函数的概念,非常的重要,函数也是对象,每个函数对象都有一个隐藏属性---调用属性,当函数被调用时执行调用属性中的代码。
this和arguments 当一个函数被调用时,根据不同的上下文环境,this被赋予不同的对象的引用,而arguments就是传入函数的参数数组。 1、函数在对象内部,叫方法。 var num1={value:0,add:function(){this.value++;}}; //这里的this当然就单表num1的引用 num1.add(); document.write(num1.value+"<br>"); function Sub(){this.value--;} //这也是一个方法,如果绑定的对象没有value属性,则会引发错误 num1.sub=Sub; num1.sub(); document.write(num1.value+"<br>"); value=100; Sub(); document.write(value); //当然也可以绑定到全局对象
2、全局函数 function mul(x,y) { document.write(x*y+"<br>"); } mul(10,10);//传统意义的函数
3、构造函数 function rec(length,width) { this.length=length; this.width=width; } var rec1=new rec(100,50); //可以这么理解,new产生一个object,并且函数中的this绑定到了这个object,所后则可以添加属性等操作。
4、call和apply function rec(length,width) { this.length=length; this.width=width; } var rec1=new rec(100,50); function circle(x,y,radius) { this.x=x; this.y=y; this.radius=radius; } var circle1=new circle(10,10,40); function addnum(addvalue) { for (var i in this) { this[i]+=addvalue; } } document.write("add before=======<br>"); document.write("rec1=======<br>"); for (var i in rec1) { document.write("value of "+i+" is: "+rec1[i]+"<br>"); } addnum.call(rec1,1);//获得rec1的引用到this document.write("add after=======<br>"); document.write("rec1=======<br>"); for (var i in rec1) { document.write("value of "+i+" is: "+rec1[i]+"<br>"); } document.write("add before=======<br>"); document.write("circle1=======<br>"); for (var i in circle1) { document.write("value of "+i+" is: "+circle1[i]+"<br>"); } addnum.call(circle1,2);//获得circle的引用到this document.write("add before=======<br>"); document.write("circle1=======<br>"); for (var i in circle1) { document.write("value of "+i+" is: "+circle1[i]+"<br>"); } apply和call类似,只是后面的参数要用数组传递而已。
可见理解JS的函数最重要的就是要理解this在上下文中的含义。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-01-24
不错,function中的this确实很重要。不过谈js的function,应该多谈一谈闭包
|
|
返回顶楼 | |