奇妙的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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
Mar 01 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
深入学习JavaScript中的原型prototype
Aug 13 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
JavaScript DOM节点操作方法总结
Aug 23 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
vue实现百度搜索功能
Dec 28 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
Jul 31 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
php+curl 发送图片处理代码分享
2015/07/09 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
javascript 写类方式之七
2009/07/05 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
js实现常用排序算法
2016/08/09 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
2017/03/23 jQuery
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python入门_学会创建并调用函数的方法
2017/05/16 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
python如何将两个txt文件内容合并
2019/10/18 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
机械设计制造专业个人求职信
2013/09/25 职场文书
营销与策划应届生求职信
2013/11/04 职场文书
物流管理应届生求职信
2013/11/07 职场文书
银行员工职业规划范文
2014/01/21 职场文书
服务质量承诺书
2014/03/27 职场文书
护林员个人总结
2015/03/04 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
初中数学教学反思范文
2016/02/17 职场文书
java版 联机五子棋游戏
2022/05/04 Java/Android