奇妙的js


Posted in Javascript onSeptember 24, 2007
>>> function a(){function b(){return "aaa"} Function.prototype.c=function(){return b();}}     
>>> a()     
>>> a.c     
function()     
>>> a.c()     
"aaa"    
>>> a.hasOwnProperty("c")     
false 

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

代码

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

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

Javascript 相关文章推荐
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
javascript脚本调试方法小结
Nov 24 Javascript
jQuery实现可拖动的浮动层完整代码
May 27 Javascript
js中的this关键字详解
Sep 25 Javascript
JavaScript 数组详解
Oct 10 Javascript
JavaScript模块随意拖动示例代码
May 27 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
Sep 07 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
微信小程序promsie.all和promise顺序执行
Oct 27 Javascript
vue权限路由实现的方法示例总结
Jul 29 Javascript
让getElementsByName适应IE和firefox的方法
Sep 24 #Javascript
js的with语句使用方法
Sep 21 #Javascript
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 #Javascript
指定js可访问其它域名的cookie的方法
Sep 18 #Javascript
完整显示当前日期和时间的JS代码
Sep 17 #Javascript
符合标准的js表单提交的代码
Sep 13 #Javascript
js类后台管理菜单类-MenuSwitch
Sep 12 #Javascript
You might like
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
实习生个人找工作的自我评价
2013/10/30 职场文书
经营管理策划方案
2014/05/22 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
个人工作能力自我评价
2015/03/05 职场文书
优秀英文求职信范文
2015/03/19 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL