奇妙的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 相关文章推荐
javascript中的=等号个数问题两个跟三个有什么区别
Oct 23 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
Dec 29 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
轻松掌握JavaScript策略模式
Aug 25 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
解决jquery appaend元素中id绑定事件失效的问题
Sep 12 jQuery
微信小程序App生命周期详解
Jan 31 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
JavaScript 五大常见函数
Mar 23 Javascript
解决vue项目使用font-awesome,build后路径的问题
Sep 01 Javascript
Vue 中获取当前时间并实时刷新的实现代码
May 12 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生成Gif图片验证码
2013/10/27 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
Script的加载方法小结
2011/01/12 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
javascript操作css属性
2013/12/30 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python对列表中的各项进行关联详解
2017/08/15 Python
基于Python os模块常用命令介绍
2017/11/03 Python
numpy返回array中元素的index方法
2018/06/27 Python
简单了解django文件下载方式
2020/02/10 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
大家检讨书5000字
2014/02/03 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
公路绿化方案
2014/05/12 职场文书
七年级英语教学反思
2016/02/15 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
Golang 结构体数据集合
2022/04/22 Golang