随笔分类 - JavaScript
摘要:在《JS DOM编程艺术》一书中,用return false来阻止事件默认行为,可是js高程3里没有这种用法,那这到底是什么呢。 先看一下知乎的一个解释 就此问题,首先要纠正两个观点: 1、 事件处理方法中 的 return false 并不是终止事件,而是阻止事件宿主的默认行为; 2、 不是在所有
阅读全文
摘要:高程3使用拼接字符串形式解析的查询字符串,网上有各种正则方式解析的,记得太多,临时需要写的时候,自己都搞混乱了。只记一种吧,用正则。 另外一种方法是 这两种方法区别是,对于查询字符串里的key1只有键没有值,方法1会忽略该键,方法2不会忽略而是把值当成undefined 兼容老浏览器的getElem
阅读全文
摘要:这段时间一直在研究设计模式,在看工厂模式的时候,看到一段代码 对这段代码最后的返回new this.vehicleClass( options )有些迷惑,到底是先执行了后面的方法还是先new了一个新对象出来呢? 直到今天v2ex出现一道JS面试题, v2ex链接 前面几问都没问题,到后面涉及到ne
阅读全文
摘要:《JavaScript模式》一书看完一半了,越发感慨要精通JavaScript并非一夕一朝之事。先不说设计模式,就说JS的模块模式你真正灵活运用了么?这是成为一名架构师必备的基础。只是看书是很难掌握这些模式的灵活运用,需要实战,大量的实战。去什么地方实战呢,业务代码是很少有机会进行这个层面的实战的。
阅读全文
摘要:一直在尝试为javascript找一个快捷可靠的对象深拷贝的方法,昨天突发奇想,把对象push到一个空数组里,然后对改数组通过concat()或slice()进行拷贝,然后取出数组的第一个元素复制给变量,这个变量岂不就是深拷贝的对象么。说干就干,上代码 若成功的话,控制台里是对象{c: 1},否则是
阅读全文
摘要:最终答案在一个类库里,地址 https://github.com/yahoo/ypromise 这个类库也有问题,就是下面这道面试题在IE9里实现不一致,类库里还是用了setTimeout。去年尝试用setTimeout(,0)来实现Promise,见Promise的实现原理 ,最后以失败告终。今天
阅读全文
摘要:重新看《JavaScript设计模式与开发实践》一书,第32页发现个简易版的Function.prototype.bind实现,非常容易理解,记录在这了。 原文也给了个完整版的实现,这儿就不写了。
阅读全文
摘要:有何区别,为何一定要通过call。 我们知道call是用来改变函数作用域的,Object.prototype.toString.call在这儿也是用来改变作用域的。 Object.prototype.toString() 在toString方法被调用时,会执行下面的操作步骤(参考): 1. 获取th
阅读全文
摘要:先看第一个,代码 结果控制台给出false。问题在哪? 发现把{3, 8}逗号后的空格删了就好了。习惯性在逗号后敲空格了,尤其是ES6对对象进行扩展以后,以后不能这样子了。 接下来看个比较难的,零宽正向断言,不熟悉的话可以看看《JS权威指南》和这篇文章。 在写货币千分位格式化的时候,正确是这样子的,
阅读全文
摘要:《JavaScript高级程序设计(第三版)》反反复复看了好多遍了,这次复习作为2017年上半年的最后一次,将所有模糊的、记不清的地方记录下来,方便以后巩固。 0. <script>元素属性 async表示立即下载脚本,但不应该妨碍页面中其他操作; defer表示延迟到文档完全被解析和显示之后再执行
阅读全文
摘要:写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译。 ES6引入外部模块分两种情况: 1.导入外部的变量或函数等; 2.导入外部的模块,并立即执行 第2种情况就不用讲了,就是执行从头到尾执行引入的js文件,当然,会忽略js文件里export。 下面详细讲第1种情况。 两个
阅读全文
摘要:在package.json可以看到一个放在package.json 的dependencies , 一个放在devDependencies里面。 目前找到的一些解答:真正跑在用户浏览器中的代码,比如jquery,react这些,是需要安装到dependencies中的。 其他类似一些工具类的,比如g
阅读全文
摘要:这次探究可能存在问题,为了不浪费您的时间,请忽略此文。 先看的这篇有问题的文章 ps: 2018年更新 这篇有问题的文章已经被作者团队删除了 花了很长时间研究这篇文章,卡在实现串行Promise那儿了,一直看不明白。就在刚才,发现这篇文章是错的,在第一次用setTimeout( ,0)那儿就错了。虽
阅读全文
摘要:在html某元素上绑定一个click事件,该事件是一个执行事件很长的函数,比如执行几十亿或几百亿次加法,那么在这个函数执行的过程中,其他元素绑定的事件,是如何触发的呢,异步触发还是同步,触发时是怎么执行的呢,也是同步执行下来的么?明天好好研究一下。 目前找到一篇不错的博文,今晚看不完了,明天接着研究
阅读全文
摘要:var a = [{x:1}, {y:1}, {z:3}]; var b = a.concat(['gg', 'ff']); var c = []; c.push(a[1]); console.log(a[1] b[1]); console.log(' '); console.log( c[0] a
阅读全文
摘要:该文章在2020年1月份进行了重写,文章地址: html元素设置display为none,绑定的事件还存在么 以下是2016年的旧文 元素设置为display:none,虽然该元素从页面中消失了,其绑定的事件仍存在。 上图是初始页面。change1可以使div在红色和黑色切换,当点击change2时
阅读全文
摘要:今天又是孟哥解惑。 数组里的元素也是指向内存地址么? 这个要分情况的。 无论a[0],a[2]在什么地方,只要其值是基本类型值,就是值的比较,只要其值是引用类型(对象),就是内存地址的比较。 Vue官方API:http://cn.vuejs.org/api/#array-_24remove_28re
阅读全文
摘要:直接从项目里复制了一份关于WebViewJavascriptBridge使用的代码,注释部分是自己暂时的理解。孟哥说,callHandler类似于jq里的trigger, registerHandler类似于jq的bind。暂时先这样理解,应该找本移动Web的书看看了。
阅读全文
浙公网安备 33010602011771号