奇妙的js
>>> 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定义后好似没有办法再修改了,不知道是不是这样
相关推荐
-
奇妙的js
复制代码 代码如下: >>> function a(){function b(){return "aaa"} Function.prototype.c=function(){return b();}} >>> a() >>> a.c function() >>> a.c() "aaa" >>> a.hasOwnProperty(&q
-
THREE.JS入门教程(3)着色器-下
译序 Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D.但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习. .简介 这是WebGL着色器教程的后半部分,如果你没看过前一篇,阅读这一篇教程可能会使你感到困惑,建议你翻阅前面的教程. 上一篇结束的时候,我们在屏幕中央画了一个好看的粉红色的球体.现在我要开始创建一些更加有意思的东西了. 在这一篇教程中,我们会先花点时间
-
THREE.JS入门教程(1)THREE.JS使用前了解
Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D.但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习. 国外网站 aerotwist.com 有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享. 我在一些实验项目中使用了Three.js,我发现它对快速上手浏览器3D编程确实很有帮助.通过Three.js,你不仅可以创建相机.物体.光线.材质等等,还可以选择
-
js每次Title显示不同的名言
每次都有不同的名言出来. 实现方法: 1.上传title.js到网站目录 2.在页面相应位置添加以下代码: <script type="text/javascript" src="file/title.js" charset="UTF-8"></script> 3.title.js代码如下: _VC_DocumentTitles = new Array('世间的活动,缺点虽多,但仍是美好的', '真正没有资格谈明天的人,是
-
js Clip的奇思妙想之文字拼接效果
那么有人就问了,什么CSS做的效果既奇妙又实用的呢?Clip,对,就是css里的clip属性,被多数人忽略的属性: 语法: clip : auto | rect ( number number number number ) 参数: auto : 对象无剪切 rect ( number number number number ) : 依据上-右-下-左的顺序提供自对象左上角为(0,0)坐标计算的四个偏移数值,其中任一数值都可用auto替换,即此边不剪切 . 需要注意的是 1.clip属性一定要
-
JS实现鼠标移动到缩略图显示大图的图片放大效果
一个网页上用的图片提示效果,当把鼠标移动到图片缩略图的时候,会显示图片大图,似乎在网上这是个很常见的效果,实现方法也比较多,有人用CSS,有人用JavaScript,有人用jQuery,总之,选择自己习惯的方式去实现,就是最棒的. 图片提示效果 body{margin:0 ;padding:40px;line-height:180%;} img{border:none;} ul,li{margin:0 ;padding:0;} li{list-style:none;display:inline;
-
js随机生成字母数字组合的字符串 随机动画数字
js随机动画生成一组随机数字 在线预览 点击下载 效果描述: 附件中只有一个index.html文件有效 其中包含css以及html两部分内容 纯js生成的几个随机数字 每次都不重复,点击按钮后再次切换 使用方法: 1.将css样式引入到你的网页中 2.将body中的代码部分拷贝到你需要的地方即可 JS生成随机的由字母数字组合的字符串 前言 最近有个需求,是需要生成3-32位长度的字母数字组合的随机字符串,另一个是生成43位随机字符串. 方法一 奇妙的写法 Math.random().toStr
-
使用node.js中的Buffer类处理二进制数据的方法
前言 在Node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区.这篇文章就详细介绍了node.js中的Buffer类处理二进制数据的方法,下面话不多说,来看看详细的介绍. 创建Buffer对象 第一种:直接使用一个数组来初始化缓存区 var arr = [0,1,2] var buf = new Buffer(arr) console.log(buf) 执行效果: 第二种:直接使用一个字符串来初始化缓存区 var str = 'hello' var buf = n
-
Vue.js构建你的第一个包并在NPM上发布的方法步骤
本文我们将学习如何制作一个vue插件,并将其分发到npm上,能够让其他人安装使用. 插件大大地提高了开发者的开发效率.我们的大多数项目都依赖于它们,因为它们能够以极快的速度发布新功能. 正如官方Vue.js文档中所述,插件的范围没有限制.通常我们想实现的功能有下面5种: 添加全局方法或者属性 (如: vue-custom-element) 添加全局资源:指令/过滤器/过渡等 (如:vue-touch) 通过全局 mixin 方法添加一些组件选项 (如:vue-router) 添加 Vue 实例方
-
JS简单生成由字母数字组合随机字符串示例
本文实例讲述了JS简单生成由字母数字组合随机字符串.分享给大家供大家参考,具体如下: 前言 最近有个需求,是需要生成3-32位长度的字母数字组合的随机字符串,另一个是生成43位随机字符串. 方法一 奇妙的写法 Math.random().toString(36).substr(2); 输出结果 解释 很有意思,研究了一下,基本上toString后的参数规定可以是2-36之间的任意整数,不写的话默认是10(也就是十进制),此时返回的值就是那个随机数. 若是偶数,返回的数值字符串都是短的,若是奇数,
随机推荐
- mysql 5.7.17 安装配置方法图文教程(windows)
- spring Boot与Mybatis整合优化详解
- java常见的序列化方式
- python通过socket查询whois的方法
- javascript生成/解析dom的CDATA类型的字段的代码
- PHP中创建和验证哈希的简单方法实探
- Python开发微信公众平台的方法详解【基于weixin-knife】
- 用c语言实现HUP信号重启进程的方法
- 全面了解JavaScript的数据类型转换
- Android studio 如何删除项目 module
- 解析mysql中:单表distinct、多表group by查询去除重复记录
- windows环境下Mysql中文乱码问题解决方法
- 基于JavaScript实现 获取鼠标点击位置坐标的方法
- 页面的缓存与不缓存设置及html页面中meta的作用
- 用BAT脚本快速编辑host文件的方法例子
- sql中all,any,some用法
- 浅谈SQL Server中的三种物理连接操作(性能比较)
- Bootstrap源码解读媒体对象、列表组和面板(10)
- ewebeditor在.net的使用方法
- C#实现将窗体固定在显示器的左上角且不能移动的方法