论坛首页 Web前端技术论坛

js中的函数

浏览 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在上下文中的含义。

 

   发表时间:2011-01-24  
不错,function中的this确实很重要。不过谈js的function,应该多谈一谈闭包
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics