奇妙的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 相关文章推荐
jQuery之日期选择器的深入解析
Jun 19 Javascript
深入理解jquery跨域请求方法
May 18 Javascript
浅谈JavaScript 覆盖原型以及更改原型
Aug 31 Javascript
详解Angular 4.x NgTemplateOutlet
May 24 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 Javascript
前端构建工具之gulp的语法教程
Jun 12 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
bootstrap table表格客户端分页实例
Aug 07 Javascript
微信小程序实现tab切换效果
Nov 21 Javascript
基于Vue2.X的路由和钩子函数详解
Feb 09 Javascript
mint-ui在vue中的使用示例
Apr 05 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 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处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python NumPy库安装使用笔记
2015/05/18 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
python字典的常用操作方法小结
2016/05/16 Python
Python快速从注释生成文档的方法
2016/12/26 Python
python 画函数曲线示例
2019/12/04 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
大学校园毕业自我鉴定
2014/01/15 职场文书
物流业务员岗位职责
2014/02/08 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
企业宣传方案
2014/03/04 职场文书
暂停营业通知
2015/04/25 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
荒岛余生观后感
2015/06/09 职场文书
中学总务处工作总结
2015/08/12 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang