franki Blog

make a small progress every day

js进阶

js进阶修炼手册

手写一个call函数 es5实现 Function.prototype.call2 = function() { var args = arguments; var context = args[0] || window; context.fn = this; var newArr = []; for(var i=0; i<args.le...

图解event loop

event loop 众所周知,javascript是单线程的,代码只能一步一步执行,如果一个任务消耗的时间太长,那么后面的任务就会被阻塞,js就是通过event loop(事件循环)来解决这个问题的。 stack queue heap event loop stack 吃多了上吐 queue 吃多了下泄 heap 存放对象 具体表现 有何用处 对于js的执行...

v8引擎运行原理浅析

v8引擎 V8引擎是一个JavaScript引擎实现,最初由一些语言方面专家设计,后被谷歌收购,随后谷歌对其进行了开源。V8使用C++开发,,在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高...

git commit 提交规范

git commit信息规范 Angular团队规范 <type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer> 通过vim界面编写填写的最终结果如上所示,大致分为三个部分(使用空行分割) 标题行:必填,描述...

js实现常见的数据结构

数据结构对于工作中的作用可大可小,在当前前端的使用场景并没有十分广泛,但是对于一个对于开发者来说,技术不断精进是一个循序渐进的过程,所以很有必要进行学习。 js 数据结构 实现斐波那契数列 var fibonaci = []; fibonaci[0] = 1; fibonacip[1] = 1; for (var i=2; i<20; i++) { fibonaci[...

设计原则与编程技巧

单一职责原则 单一职责原则(SRP)的职责被定义为“引起变化的原因”。如果我们有两个动机去改写一 个方法,那么这个方法就具有两个职责。每个职责都是变化的一个轴线,如果一个方法承担了过 多的职责,那么在需求的变迁过程中,需要改写这个方法的可能性就越大 因此,SRP 原则体现为:一个对象(方法)只做一件事情。 以下设计模式都符合此规则: 1 代理模式 2 迭代器模式 3 代理模式 4 装饰者...

设计模式之适配器模式

适配器模式 解决两个软件实体之间接口不兼容的问题 var googleMap = { show: function() { console.log("start to render googleMap"); } }; var baiduMap = { show: function() { console.log("start t...

设计模式之状态模式

状态模式的关键是区分事物内部的状态,事物的内部状态改变往往会带来事物行为的变化。 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 一 电灯程序 // 普通处理方式 var Light = function() { this.state = "off"; // 电灯初始状态 this.button = null; // 电灯的开关按钮 }; Li...

设计模式之装饰者模式

装饰者模式 装饰者模式的作用就是为对象动态加入行为 装饰者模式经常会形成一条长长的装饰链 // 装饰者模式 var Plane = function() {}; Plane.prototype.fire = function() { console.log("发射普通子弹"); }; var daodan = function(plane) { this.plane...

设计模式之职责链模式

职责连模式 很多个对象都有机会去处理请求,从而避免了请求的发送者和接收者直接的耦合关系,讲这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 职责链模式的名字非常形象,一系列可能会处理请求的对象被连接成一条链,请求在这些对象之间依次传递,直到遇到一个可以处理它的对象,我们把这些对象称为链中的节点。 // 订单处理 // 500元订单 orderType 订购类型...