随笔分类 -  前端

摘要:项目初衷 最初的场景是用户在对 购物车 的操作中,由于用户对购物车的每次操作(包括选择,调整数量)都需要计算商品的促销和分组的情况,而这段逻辑的计算都需要调用后端的接口,那么瓶颈来了: 请求时间长——一次 HTTPS 的请求对于 web 性能有很大的影响,尤其是对于移动端来说,用户所在的网络状况直接 阅读全文
posted @ 2016-12-27 19:23 蓝莓调调 阅读(660) 评论(0) 推荐(0)
摘要:问题描述 从某天起,在大群里有 KOL 用户反馈:在微信客户端里打开商品详情页会出现页面尺寸放大的现象: 出现的频次不确定,不能稳定复现,且在北京、长沙几个地域均出现了该情况。 技术前提 出现这种现象的前提,是因为前端配置了页面的 viewport meta 标签,并使用 JS 动态根据设备尺寸和像 阅读全文
posted @ 2016-12-21 11:42 蓝莓调调 阅读(259) 评论(1) 推荐(0)
摘要:JS里的异常处理JS的异常捕获与处理可以从它的 try-catch 语法结构说起,具体形式如下:try{ ... //异常的抛出}catch(e){ ... //异常的捕获与处理}finally{ ... //结束处理}其中,try块:try块包含的是可能产生异常的代码,在这里面直接或者在里面通过调用函数里间接抛出的异常都可以捕获到。部分浏览器还可以找到具体抛出的位置。详见e.stack。catch块:catch块,是捕获异常,并处理异常的地方,包括条件捕获和非条件捕获。//条件捕获与非条件捕获try { throw new Err();}catch(... 阅读全文
posted @ 2013-04-22 21:42 蓝莓调调 阅读(2438) 评论(0) 推荐(1)
摘要:闭包使用时一个常出现的错误,现分析一下,给例子:function foo(){ var i; for(i = 0; i < 10; i++){ setTimeout(function(){ console.log(i); },1000); }}foo(); //10,10,10,10,10,10,10,10,10,10这是秘密花园给的例子,在setTimeout方法里创建了一个闭包,调用了外层函数的 i 属性。连续10次调用setTimeout方法,在1秒后连续输出了10个数字。这里调用setTimeout方法主要是用来... 阅读全文
posted @ 2013-04-17 14:23 蓝莓调调 阅读(1491) 评论(13) 推荐(0)
摘要:名词理解: prototype属性,是函数对象特有的属性,不存在其他对象中(函数也是对象)。每当创建一个新函数,该函数就会自动包含一个prototype属性,这个属性用来指向函数的原型对象。 prototype对象,即原型对象。 原型对象里包含着实例中需要共享的属性和方法。这里要注意,由于原型对象本身就是对象,那么默认的原型对象也是Object对象的实例。 [prototype]指针,是ECMAScript 5中定义的一个名称,是构造函数创造的新实例中指向构造函数原型对象的指针,也就是部分浏览器中可见到的__proto__属性。 见如下例子:function Foo(){} //... 阅读全文
posted @ 2013-04-12 18:18 蓝莓调调 阅读(1110) 评论(2) 推荐(0)
摘要:RegExp对象的创建: 常规的正则表达式的创建可用直接量,即斜杠 “/” 括起来的字符。但在要求参数变化的环境下,RegExp()构造函数是更好的选择:var reg1 = /'\w+'/g;var reg2 = new RegExp('\'\\w+\'','g'); 对比两种创建方式,RegExp中的第一个参数为要创建的正则字符串,一方面注意,因为不是直接量的表示形式,因此不用斜杠“ / ”括起来了;而是字符串中必须要对引号“ ‘ ”和转义符号“ \ ”进行二次转义。 此外,无论是直接量还是RegExp()构造函数,都是生成了 阅读全文
posted @ 2013-04-11 16:50 蓝莓调调 阅读(2246) 评论(0) 推荐(1)