精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-05
学习知识难免会忘记,关键是在忘记之后,下次遇到时能够通过快捷的方法来回忆,并尽量达到忘记之前的状态。总结也许是日后回忆的一种有效方法,前些日子看了javascript的function,总结如下: 学习function重要的就是明白当程序运行到函数声明的时候,并不执行该函数,当其他函数调用所声明的函数时,该函数才被执行,也就是英文说的function is complied,but not executed until you call it. 再有就是函数在声明时创建变量。例如function(){}就创建了一个变量,虽然这个变量是匿名的。 js 代码
第一条语句是定义一个匿名function,并将该函数赋给a变量。第二条语句是定义一个匿名function,并调用将该函数的返回结果赋值给a变量。 function add(a,b){};则是定义了一个function,该function的名字是add,相当于一个名为add的变量指向该function。 看看以下代码,感觉挺有意思: js 代码
在调用myFuction函数的时候,打印出New字符串,代码的第二行明确指出savedFunction=myFunction,但是在调用savedFunction的时候会出现Old字符串,这种情况应该引起java同行的注意,在javascript中,指针指向的是代码片段,执行第二行的时候,savedFucntion指向的是myFuction所指向的代码片段 myFunction code(第一行),然而在第三行myFunction指针由先前的代码片段myFunction code改变为代码片段function(){alert("New")} code的时候,先前的代码片段仍然未消失,被savedFunction所指向,这也就解释了为什么最后程序打印出的字符串仍是Old。 对于Function关键字来说仅在特殊情况下用到,一般就用function,这里就不再介绍了。 prototype属性对于初学js的人来说比较迷惑,这里大致的总结如下: 一般的变量没有prototype属性,constructor function有prototype属性,也就是声明的function(){}变量,js中的每个对象都有一个_proto_和constructor属性,如果一个对象由constructor function生成,例如: js 代码
解释以下,最后一行代码等同于: js 代码
接着说,如果一个对象由constructor function生成,则该对象ball0的_proto_属性指向它的构造函数的prototype属性,也就是指向constructor function(这里是前三行代码)所具有的prototype属性,因此凡是用该constructor function生成的对象,都带有该function的prototype属性。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-05
对JS function的理解不妨参考下FP(函数式)语言的特点。
“Functional 程序设计的最吸引人注意的地方在于,"函数"现在可以被当作像整数(int)和浮点数(float)一样的数据类型。这就是说,我们可以把函数 func 赋值给一个变量;可以从子程序返回一个函数,就跟返回一个浮点数一样的容易;两个函数可以进行复合运算,就像两个整数可以进行加减乘除运算一样。我们将看到,在 Functional 程序设计里面,"函数"被提升为程序设计语言中的第一等(First Class)的公民,使用"函数"可以像使用整数和浮点数或者是字符串一样的随心所欲;不再象过去,函数只能被调用,没有其它的花样。” 详见:http://jstang.5d6d.com/thread-79-1-1.html |
|
返回顶楼 | |
浏览 4061 次