奇妙的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 相关文章推荐
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
Mar 11 Javascript
javascript基于HTML5 canvas制作画箭头组件
Jun 25 Javascript
jquery的clone方法应用于textarea和select的bug修复
Jun 26 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
Mar 06 Javascript
html5+javascript实现简单上传的注意细节
Apr 18 Javascript
JS实现页面数据无限加载
Sep 13 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
Jan 21 Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
vue select组件的使用与禁用实现代码
Apr 10 Javascript
AngularJs中$cookies简单用法分析
May 30 Javascript
vue动态绑定style样式
Apr 20 Vue.js
让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调用Java对象的方法
2006/10/09 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php 保留字列表
2012/10/04 PHP
PHP 正则表达式小结
2015/02/12 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
python之import机制详解
2014/07/03 Python
Python读写unicode文件的方法
2015/07/10 Python
python学习基础之循环import及import过程
2018/04/22 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
pandas中ix的使用详细讲解
2020/03/09 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
自主招生自荐信
2013/12/08 职场文书
中学生演讲稿
2014/04/26 职场文书
机械系毕业生求职信
2014/05/28 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
大学开学感言
2015/08/01 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
SQL语句多表联合查询的方法示例
2022/04/18 MySQL