随笔分类 - javascript
js相关
摘要:应该是 a.b.c.d 比 a['b']['c']['d'] 性能高点,后者还要考虑 [ ] 中是变量的情况,再者,从两种形式的结构来看,显然编译器解析前者要比后者容易些,自然也就快一点。 测试如下: function compare(times) { let a = { key: {} }; le
阅读全文
摘要:Promise.prototype.finally = function (callback) { let P = this.constructor; return this.then( value => P.resolve(callback()).then(() => value), reason
阅读全文
摘要:两种实现思想: 每次轮播元素动画执行到末尾的时候迅速让其位置恢复原位,造成视觉上的无缝轮播 将轮播元素复制一份,第一个item元素轮播执行完后将其删除后添加在整个轮播列表的最后,造成循环轮播
阅读全文
摘要:function fn(a, b) { const result = []; const map = a.reduce((obj, item) => { obj[item] ? obj[item]++ : obj[item] = 1; return obj; }, {}); b.forEach(it
阅读全文
摘要:箭头函数是普通函数的简写,可以更优雅的定义一个函数,和普通函数相比,有以下几点差异: 1、函数体内的 this 对象,就是定义时所在的对象,而不是使用时所在的对象。 2、不可以使用 arguments 对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。 3、不可以使用 yield
阅读全文
摘要:求表达式的打印: var a = {n: 1}; var b = a; a.x = a = {n: 2}; console.log(a.x) console.log(b.x) 解: 改写如下: var a = { n : 1}; var b = a; // . 优先级比 = 的高 a.x;// 同等
阅读全文
摘要:主要应用于只需要向服务器发送数据(日志数据)的场合,且无需服务器有消息体回应。比如收集访问者的统计信息。 一般做法是服务器用一个1x1的gif图片来作为响应,当然这有点浪费服务器资源。因此用header来响应比较合适,目前比较合适的做法是服务器发送"204 No Content",即“服务器成功处理
阅读全文
摘要:作用是一样的,区别在于传入参数的不同; 第一个参数都是,指定函数体内this的指向; 第二个参数开始不同,apply是传入带下标的集合,数组或者类数组,apply把它传给函数作为参数,call从第二个开始传入的参数是不固定的,都会传给函数作为参数。 call比apply的性能要好,平常可以多用cal
阅读全文
摘要:四种方式: //Promiseconst sleep = time => { return new Promise(resolve => setTimeout(resolve,time))}sleep(1000).then(()=>{ console.log(1)}) //Generatorfunc
阅读全文
摘要:第一阶段——无模块化 将所有JS文件都放在一块,代码执行顺序就按照文件的顺序执行。缺点是污染全局作用域。每一个模块都是暴露在全局中的,容易产生命名冲突。还有要手动处理各代码的依赖关系。 第二阶段——commonJS规范 是一个JavaScript模块化的规范,一个文件就是一个模块,内部定义的变量就属
阅读全文
摘要:联系 两种模式本质都是一样的,都是某个对象(subject, publisher)改变,使依赖于它的多个对象(observers, subscribers)得到通知。 区别 发布-订阅模式是观察者模式的一种变体。发布-订阅只是把一部分功能抽象成一个独立的ChangeManager。 主要关键点都在于
阅读全文
摘要:主要有三个:Object.prototype.toString.call() 、 instanceof 以及 Array.isArray(),对比如下: Object.prototype.toString.call() 优点:这种方法对于所有基本的数据类型都能进行判断,即使是 null 和 unde
阅读全文
摘要:先理清楚 new 关键字调用函数都的具体过程,那么写出来就很清楚了 首先创建一个空的对象,空对象的__proto__属性指向构造函数的原型对象 把上面创建的空对象赋值构造函数内部的this,用构造函数内部的方法修改空对象 如果构造函数返回一个非基本类型的值,则返回这个值,否则上面创建的对象 func
阅读全文
摘要:回调函数 • 优点:简单、容易理解• 缺点:不利于维护,代码耦合高 事件监听(采用时间驱动模式,取决于某个事件是否发生) • 优点:容易理解,可以绑定多个事件,每个事件可以指定多个回调函数• 缺点:事件驱动型,流程不够清晰 发布/订阅(观察者模式) • 类似于事件监听,但是可以通过‘消息中心‘,了解
阅读全文
摘要:事件循环是通过任务队列的机制来进行协调的。 任务队列 JS分为同步任务和异步任务 同步任务都在主线程上执行,形成一个执行栈 主线程之外,事件触发线程管理着一个任务队列,只要异步任务有了运行结果,就在任务队列之中放置一个事件。 一旦执行栈中的所有同步任务执行完毕(此时JS引擎空闲),系统就会读取任务队
阅读全文
摘要:使用:"use strict"; 作用: - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全; - 提高编译器效率,增加运行速度; - 为未来新版本的Javascript做好铺垫。 表现:
阅读全文
摘要:模块化:作用于js;基于功能对文件进行拆分; 组件化:作用于整个应用,基于功能单元对文件进行拆分; 二者都是为了重复引用。
阅读全文
摘要:新增内容: 1、let,const,import,class变量声明语法(es5只有:var,function) 2、块级作用域 3、引入global对象 4、变量的解构赋值 5、遍历器Iterator和for...of循环遍历 6、字符串、正则、数值、函数、数组、对象的扩展 7、原始数据类型Sym
阅读全文

浙公网安备 33010602011771号