你不知道的JS-读书笔记(二)--闭包,模块
来源:互联网 发布:相声是什么知乎 编辑:程序博客网 时间:2024/06/06 01:38
闭包的效果
function foo () { var a = 2; function bar () { console.log(a); } return bar;}var baz = foo()baz() // 2
循环与闭包
for (var i = 0; i < 5; i++) { (function (j) { setTimeout(function timer () { console.log(j); }, j*1000) })(i)}// 等同于for (let i = 0; i < 5; i++) { setTimeout(function timer () { console.log(i); }, i*1000)}
模块机制
// 模块管理器var MyModules = (function Manager() { var modules = {}; function define(name, deps, impl) { // 遍历依赖模块列表 for (var i=0; i<deps.length; i++) { deps[i] = modules[deps[i]]; } // 将依赖模块作为参数 传入模块方法 modules[name] = impl.apply( impl, deps ); } function get(name) { return modules[name]; } return { define: define, get: get };})();// 定义模块 "bar"MyModules.define( "bar", [], function() { function hello(who) { return "Let me introduce: " + who; } return { hello: hello };});// 定义模块 "foo" 且依赖模块 "bar"MyModules.define( "foo", ["bar"], function(bar) { var hungry = "hippo"; function awesome() { console.log( bar.hello( hungry ).toUpperCase() ); } return { awesome: awesome };});// 使用var bar = MyModules.get( "bar" );var foo = MyModules.get( "foo" );console.log( bar.hello( "hippo" )); // Let me introduce: hippofoo.awesome(); // LET ME INTRODUCE: HIPPO
this 与 箭头函数
var obj = { id: "awesome", cool: function coolFn() { console.log( this.id ); }};obj.cool(); // "awesome"var id = "not awesome"setTimeout( obj.cool, 100 ); // "not awesome"// 参数 隐式赋值,丢失上下文// 原因分析 setTimeout 中传递方法 解析为如下格式,无关乎调用问题setTimeout(function coolFn(){ // ...}, 100)
阅读全文
0 0
- 你不知道的JS-读书笔记(二)--闭包,模块
- 你不知道的JS读书笔记1—闭包&作用域
- 你不知道的JS-读书笔记(一)--作用域
- 你不知道的JS-读书笔记(五)--原型[Prototype]
- 你不知道的JS---作用域和闭包
- 你不知道的JS——札记(二)
- 你不知道的JS读书笔记2—this对象
- 你不知道的JS读书笔记5—原型继承
- 你不知道的JavaScript--Item10 闭包(closure)
- 你不知道的JavaScript(三)闭包
- 你不知道的JS-读书笔记(三)--this和对象原型
- 你不知道的JS-读书笔记(四)--混合对象类
- 你不知道的javascript(二)
- 《你不知道的JavaScript》读书笔记(一)
- 你不知道的JavaScript(上卷)读书笔记
- 《你不知道的JavaScript(上卷)》读书笔记
- 读书笔记-你不知道的JavaScript(上)
- 《你不知道的JavaScript》读书笔记一
- hdf5文件读取与写入
- Android移动开发-在Android项目里集成开源框架ZXing实现扫描二维码的功能
- 从prototype beandefinition 谈 spring 的关闭流程
- java中String类总结(更新中)
- 企业平台云化如何迁移?迁移的基本思路是什么?
- 你不知道的JS-读书笔记(二)--闭包,模块
- debian下运行netstat失败
- Android 复制文件
- 强化学习入门之Q-Learning1
- android:线程池和AsyncTask使用小结
- oracle中sql语句查询优化(五)
- Android Studio 创建模板 Templates
- 传进一个时间段,按整小时切割成一个个小时段及稍作变化
- linux命令之添加系统搜索动态库目录-ldconfig