javascript总结

javascript的function的总结 
 
学习知识难免会忘记,关键是在忘记之后,下次遇到时能够通过快捷的方法来回忆,并尽量达到忘记之前的状态。总结也许是日后回忆的一种有效方法,前些日子看了javascript的function,总结如下:


学习function重要的就是明白当程序运行到函数声明的时候,并不执行该函数,当其他函数调用所声明的函数时,该函数才被执行,也就是英文说的function is complied,but not executed until you call it.


再有就是函数在声明时创建变量。例如function(){}就创建了一个变量,虽然这个变量是匿名的。


js 代码
var a=function(){};    
   
var a=function(x,y){}(1,2);    
第一条语句是定义一个匿名function,并将该函数赋给a变量。第二条语句是定义一个匿名function,并调用将该函数的返回结果赋值给a变量。


function add(a,b){};则是定义了一个function,该function的名字是add,相当于一个名为add的变量指向该function。


看看以下代码,感觉挺有意思:


js 代码
function myFunction(){alert("Old");};    
   
var savedFunction=myFunction;    
   
myFunction=function(){alert("New");};    
   
myFunction();   //prints"New"    
   
savedFunction(); //prints"Old"    
在调用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 代码
function Ball(message){    
   
alert(message);    
   
};    
   
var ball0=new Ball("executing");    
解释以下,最后一行代码等同于:


js 代码
var ball0=new Object();    
   
ball0.construct=Ball;//将属性construct指向代码片段Ball code    
   
ball0.construct("executing"); //执行该代码片段    
接着说,如果一个对象由constructor function生成,则该对象ball0的_proto_属性指向它的构造函数的prototype属性,也就是指向constructor function(这里是前三行代码)所具有的prototype属性,因此凡是用该constructor function生成的对象,都带有该function的prototype属性。
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值