event-loop-microtask-macrotask 发表于 2017-10-25 | event-loop,microtask,macrotask 文章引用 creeperyyang的blog从Promise来看JavaScript中的Event Loop、Tasks和Microtasks Node.js的event loop及timer/setImmediate/nextTick 1234567891011121314(function test() { setTimeout(function() {console.log(4)}, 0); new Promise(function executor(resolve) { console.log(1); for( var i=0 ; i<10000 ; i++ ) { i == 9999 && resolve(); } console.log(2); }).then(function() { console.log(5); }); console.log(3);})()// 为什么输出结果是1,2,3,5,4而非1,2,3,4,5? 阅读全文 »
👨🏻💻JavaScript浅拷贝与深拷贝 发表于 2017-10-22 | 👨🏻💻JavaScript浅拷贝与深拷贝原理 在JavaScript中一般简单类型是按值传递的;object与array是引用传递(就是传递地址,而不是值) 1234567891011var a = 'tom';var b = a;b = 'chen';console.log(a); // 'tom'var a = { name: 'tom'};var b = a;b.name = 'chen';console.log(a.name); // 'chen' 阅读全文 »
Vue源码阅读——MVVM原理Observe、watcher、dep 发表于 2017-09-06 | Vue源码阅读——MVVM原理Observe、watcher、dep 一直在使用Vue,但是却是不知道双向绑定的具体原理Vue是怎么实现的,比如只知道Object.defineProperty(); 在实习的项目中有时候会遇到的问题就是,从后台获取到的数据res存到data里面,然而你需要改变res里面存在的数据比如res里面有一个items对象数组,你为数组里面的一个对象添加之前不存在的字段的时候,视图并不会实时更新;因为Vue并没有通过render去更新DOM树的内容; 在vue的文档里面指出,vue的双向绑定只会响应data里面有的数据字段,以及子元素;动态添加的元素需要使用Vue.$set(obj, key, value)来添加; 阅读全文 »