奇妙的js

翻译|其它|编辑:郝浩|2007-09-26 09:59:04.000|阅读 782 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

代码

1.      >>> function a(){function b(){return "aaa"} Function.prototype.c=function(){return b();}}   

2.      >>> a()   

3.      >>> a.c   

4.      function()   

5.      >>> a.c()   

6.      "aaa"  

7.      >>> a.hasOwnProperty("c")   

8.      false  

看这段代码,首先声明一个函数  a,内部又定义了一个函数  b,但是函数  b  不是函数对象  a  的方法,只是函数  a  块当中的临时变量函数(或者说私有函数,不知道怎么描述好),后面又定义了一个函数  c  是用  function(){}  a  内部定义的,所以会产生  closure  所以  c  可以遍历到  a  下面所有块内部变量,当然包括  b,我又把  c  挂到了  Function.prototype  下面,就是不是直接挂  a  下,而是挂到  a  的原形链上,最后还是执行出来了,并且  hasOwnProperty  也是假,更有

代码

1.      >>> d={};   

2.      Object   

3.      >>> function a(){function b(){return "aaa"} d.c=function(){return b();}}   

4.      >>> a()   

5.      >>> d.c()   

6.      "aaa"  

Closure  和函数执行的  context  一点关系没有,context  可以用  call apply  方法改变  this,可是  closure    function  定义后好似没有办法再修改了,不知道是不是这样


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:JavaEye

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP