自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

转载 Generator 函数的含义与用法

异步编程对 JavaScript 语言太重要。JavaScript 只有一根线程,如果没有异步编程,根本没法用,非卡死不可。以前,异步编程的方法,大概有下面四种。回调函数事件监听发布/订阅Promise 对象ECMAScript 6 (简称 ES6 )作为下一代 JavaScript 语言,将 JavaScript 异步编程带入了一个全新的阶

2016-07-04 10:49:42 789

原创 最全的数组去重方法对比

常规方法,简洁优雅版

2016-07-02 18:26:24 679

原创 js深浅复制

深浅复制对比深浅复制代码实现第三方库的实现

2016-06-25 16:38:04 590

原创 jasmine测试框架学习笔记

介绍Jasmine就是一种JavaScript单元测试框架,它不依赖任何其他JS框架,也不需要对DOM操作,具有灵巧而明确的语法可以让你轻松的编写测试代码。它是一套Javascript行为驱动开发框架(BDD),干净简洁,表达力强且易于组织,不依赖于其他任何框架和DOM,可运行于Node.js,浏览器端或移动端。Jasmine官网:http://jasmine.github.io/

2016-06-15 16:11:42 1544

转载 改进快排

1. 选用待排数组最左边、最右边和最中间的三个元素的中间值作为中轴。(1) 首先,它使得最坏情况发生的几率减小了(2) 其次,未改进的快速排序算法为了防止比较时数组越界,在最后要设置一个哨点。如果在分区排序时,中间的这个元素(也即中轴)是与最右边数过来第二个元素进行交换的话,那么就可以省略与这一哨点值的比较2. 根据分区大小调整算法快速排序算法使用了分治技术,最终来说大

2016-05-26 19:48:29 675

转载 webstorm快捷键

ctrl + shift + N: 查找当前工程下的文件     ctrl +F: 在当前打开的文件中查找     ctrl + alt + L: 可以快速格式化代码     ctrl + F12: 显示当前文件的结构     ctrl + shift + up: 行移动     shift + alt + up: 块移动     ctrl + d:

2016-05-26 19:46:37 571

原创 gulp笔记

gulp 和 grunt 非常类似,但相比于 grunt 的频繁 IO 操作,gulp 的流操作,能更快地更便捷地完成构建工作。核心概念:流      流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理

2016-05-26 19:45:27 690

转载 webpack

webpack 的优势其优势主要可以归类为如下几个:1. webpack 是以 commonJS 的形式来书写脚本滴,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。2. 能被模块化的不仅仅是 JS 了。3. 开发便捷,能替代部分 grunt/gulp 的工作,比如打包、压缩混淆、图片转base64等。4. 扩展性强,插件机制完善,特别是支持

2016-05-26 19:44:39 575

原创 node:基于事件驱动的回调

当我们使用 http.createServer 方法的时候,我们当然不只是想要一个侦听某个端口的服务器,我们还想要它在服务器收到一个HTTP请求的时候做点什么。问题是,这是异步的:请求任何时候都可能到达,但是我们的服务器却跑在一个单进程中。写PHP应用的时候,我们一点也不为此担心:任何时候当有请求进入的时候,网页服务器(通常是Apache)就为这一请求新建一个进程,并且开始从头到尾

2016-05-26 19:42:17 522

原创 fiddler+willow使用和配合真机测试调试

背景介绍:Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。Fiddler是用C#写出来的,它包含一个简单

2016-05-26 19:38:09 14431

原创 js模版引擎介绍

js模版引擎介绍JavaScript 模板是将 HTML 结构从包含它们的内容中分离的方法。模板系统通常会引入一些新语法,但通常是非常简单的,一个要注意的有趣的点是,替换标记通常是由双花括号({ {……} })表示,这也是 Mustache 和 Handlebars 名字的来源。什么时候使用JavaScript模板?一旦我们发现自己在 JavaScript

2016-05-26 19:35:26 1724

原创 让浏览器支持Webp

Webp介绍webp是一种同时提供了有损压缩与无损压缩的图片档案格式 ,衍生自影像编码格式VP8,是由Google在购买On2 Technologies后发展出来,以BSD授权条款释出。根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这些 PNG 文件经过其他压缩工具压缩之后,WebP 还是可以减少 28% 的文件大小。 WebP最

2016-05-26 19:34:09 6975

原创 客户端检测技术

按优先级降序:能力检测怪癖检测用户代理检测能力检测:一种客户端检测形式(又称特性检测),目的不是识别特定的浏览器,而是识别浏览器的能力两个概念:1.先检测最常用的特性可以保证代码最优化2.必须测试实际要用到的特性在可能的情况下,尽量使用typeof进行能力检测用户代理检测:通过检

2016-03-12 22:50:54 503

原创 性能缓存

如果同时存在cache-control和Expires怎么办呢?浏览器总是优先使用cache-control,如果没有cache-control才考虑ExpiresETag是Web服务端产生的,然后发给浏览器客户端。浏览器客户端是不用关心Etag是如何产生的。Pragma: no-cache的作用和Cache-Control: no-cache一模一样。 都

2016-03-12 22:48:29 425

原创 面向对象的程序设计(创建对象)

使用new操作符调用构造函数经历4个步骤:1.创建一个对象2.将构造函数的作用域赋给新对象(因此this就指向了这个对象)3.执行构造函数中的代码(为新对象添加属性)4.返回新对象以构造函数模式定义的构造函数是定义在global对象(在浏览器中是window对象)中的任何函数,只要通过new操作符来调用,它就可以作为构造函数,而任何函数如果不通过new操作符

2016-03-12 22:45:54 614

原创 面向对象的程序设计(理解对象)

ecmascript中有两种属性:数据属性和访问器属性数据属性:configurable(能否通过delete删除属性从而重新定义属性,能否修改属性的特性或者能否把属性修改为访问器属性)enumerable (能否通过for-in循环返回属性)writable (能否修改属性的值)value (包含这个属性的数据值)直接在对象上定义的属性前三个默认值都为true,value

2016-03-12 22:45:17 537

原创 二叉树

每个结点至多只有两颗子树且有左右之分二叉树de性质:1.第i层  至多有2^(i-1)个结点2.深度为k的二叉树至多有2^k-1个结点3.任何一颗二叉树  终端结点为 n0,度为2的结点数为n2,n0=n2+14.一颗深度为k且有2^k-1个结点的为满二叉树5.当且仅当其每一个结点都与深度为k的满二叉树编号一一对应时称为完全二叉树

2016-03-12 22:41:13 371

原创 排序简单整理

在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的,否则不稳定内部排序:排序时不涉及数据的内外存交换(适用于记录个数不很多的小文件)外部排序:排序过程中进行数据的内外存交换(适用于记录个数太多不能一次将其全部记录放入内存的大文件)简单排序:时间复杂度 O(n^2)先进排序:O(nlogn)基

2016-03-12 22:40:24 395

原创 w3c盒模型和ie盒子模型

网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin), CSS盒子模式都具备这些属性。这些属性我们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也就是能装东西的一种箱子,也具有这些属性,所以叫它盒子模式。CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。标准 w

2016-03-03 20:04:11 1185

原创 code码

消息(1字头)编辑这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。100 Continue客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务

2016-02-29 15:02:02 666

原创 http请求

一个完整的http请求过程,通常有以下7个步骤1.建立tcp连接2.web浏览器向web服务器发送请求命令3.web服务器发送服务头信息4.web服务器应答5.web服务器发送应答头信息6.web服务器向浏览器发送数据7.web服务器关闭tcp连接一个http请求通常由四个部分组成1.一个http请求的方法或动作,比如是get还是post请求2.正在请求的u

2016-02-29 15:00:58 442

原创 HTML5特点

不区分大小写单双引号皆可,也可省略1 不允许写结束符的标签:area、basebr、col、command、Embed、hr、img、input、keygen、link、meta、param、source、Track、wbr2 可以省略结束符的标签:li、dt、dd、p、rt、optgroup、option、Colgroup、thread、tbody、tr、td、th3

2016-02-29 15:00:02 484

原创 DOM

DOM1级主要定义的是HTML和XML文档的底层结构。DOM2和DOM3级别则在这个结构的基础上引入了更多的交互能力,也支持了更高级的XML特性。为此DOM2和DOM3级分为许多模块(模块之间具有某种关联),分别描述了DOM的某个非常具体的子集。这些模块如下:1、DOM2级核心(DOM Level 2 Core):在1级核心的基础上构建,为节点添加了更多方法和属性;2、DOM2级视图(

2016-02-29 14:57:51 566

原创 dom2

事件冒泡:即事件最开始由最具体的元素接受然后逐级向上传播至最不具体的那个节点(比较主要)事件捕获:不太具体的事件更早接收到事件,最具体的节点最后接收到事件html事件的缺点:html和js紧密的耦合在一起dom0级事件处理程序:document.getElementById('btn').onclick=function(){};dom2级事件处理程序 :

2016-02-29 14:55:32 431

原创 event事件中ie和标准dom的区别

1.事件流的区别IE采用冒泡型事件 Netscape使用捕获型事件 DOM使用先捕获后冒泡型事件示例:点击这里冒泡型事件模型: button->div->body (IE事件流)捕获型事件模型: body->div->button (Netscape事件流)DOM事件模型: body->div->button->butto

2016-02-29 14:54:46 930

原创 js闭包等笔记

js没有块级作用域的概念,在for和while循环里声明的对象相当于全局变量!function(){     var a,v;}();用来把函数声明变成函数表达式NAN和任何都不等,包括自身js里的对象的比较是用引用比较而不是用值比较空对象不相等js里有六大数据类型:object,number,string,boolean,n

2016-02-29 14:54:11 324

原创 js严格模式

严格模式是一种特殊的执行模式,修复了部分语言上的不足,提供更强的错误检查,并增强安全性1028(2).html'use strict';function func(){};1.不允许使用with2.不允许未声明的变量被赋值3.arguments变为参数的静态副本4.delete报错5.对象字面量重复属性名报错6.禁

2016-02-29 14:53:28 466

原创 JS原型链

'z' in obj;用in返回的是对象及原型链上的结果  在JavaScript 中,每当定义一个对象(函数)时候,对象中都会包含一些预定义的属性。其中函数对象的一个属性就是原型对象 prototype。注:普通对象没有prototype,但有__proto__属性JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__的内置属性

2016-02-29 14:52:52 391

原创 obj.style 和currentstyle 等区别

获取样式 obj.style   和currentstyle  等区别obj.style只能获得内嵌样式(inline Style)就是写在Tag里面的,他访问不到那些链接的外部css和在head中用声明的style。所以必须认识到在那些使用外部Css文件的页面中,如果用style赋值,如obj.style=“color:red”;显然效果是正确的,其中的奥秘确是只是在该对象的

2016-02-29 14:51:14 3221

原创 页面渲染流程

1.  浏览器把获取到的HTML代码解析成1个DOM树,HTML中的每个tag都是DOM树中的1个节点,根节点就是我们常用的document对象。DOM树里包含了所有HTML标签,包括display:none隐藏,还有用JS动态添加的元素等。2. 浏览器把所有样式(用户定义的CSS和用户代理)解析成样式结构体,在解析的过程中会去掉浏览器不能识别的样式,比如IE会去掉-moz开头的样式,而F

2016-02-29 14:49:46 525

原创 回流和重绘

回流与重绘1. 当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。2. 当render tree中的一些元素需要

2016-02-29 14:49:02 1124

原创 网站结构优化-慕课网

SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”。SEO是指通过对网站内部调整优化及站外优化,使网站满足搜索引擎收录排名需求,在搜索引擎中提高关键词排名,从而把精准用户带到网站,获得免费流量,产生直接销售或品牌推广。内容页优化:热门和相关用来增加链接数目分页写法:注意

2016-02-29 14:47:38 768

原创 sublime 使用技巧

1. 选择需要注释的代码,多行或单行都很随意,然后使用”Ctrl+/”,或者使用“Ctrl+Shft+/”即可快速注释。注释了再同样按一下即可接触注释。2.按住”Ctrl+F”快捷键,即可进行快速搜索,在搜索框下边输入要找的变量名称和方法名等都可以,定位很迅速。3.技巧三:缩略图定位我们可以发现右侧可以看到整个代码的缩略图,点击相应的区域即可快速定位到了,非常方便。4.技巧四:

2016-02-29 14:44:21 397

原创 chrome笔记

在地址栏输入命令可以得到的信息:about:version – 显示当前版本 也可以是chrome-resource://about/about:plugins – 显示已安装插件about:histograms – 显示历史记录chrome://history2 – 浏览历史 History2about:dns – 显示DNS状态abo

2016-02-29 14:43:24 647

原创 angular对变量变化的策略

angular采取脏检查不会脏检查所有对象,当对象被绑定到html,才会将对象添加为检查对象不会脏检查所有属性,当绑定后才检查angular程序初始化时,会将绑定的对象的属性添加为监听对象,绑定多少个属性就会有多少个watcher什么时候去脏检查angular所系统的方法都会触发比较事件,比如:controller初始化的时候,所有以ng开头的事件执行后都会触发

2016-02-29 14:42:05 1146 1

原创 angular数据绑定

angular表达式通过$parse服务解析执行与js表达式求值区别:1.属性求值:所有属性求值是对于scope的,js是对于window对象的2.宽容:表达式求值:对于undefine和null,js会报错,angular是宽容的3.没有流程控制语句4.过滤器双向绑定scope是指向应用model的object,也是表达式的 执行上下文

2016-02-29 14:40:46 491

原创 angular概念

客户端模板在angular里,模板和数据都会被发送到浏览器中,然后再客户端进行装配MVC视图就是document object  model控制器就是js类模型数据则被存放在对象的属性中数据绑定(MVVM)数据绑定可自动将model和view间的数据同步angular实现数据绑定的方式,可以让我们把model当作程序中唯一可信的数据来源,vi

2016-02-29 14:40:03 514

原创 css基础

表示引用的标签:  表示长文本 标签,表示简短文本,自动加双引号加入代码:使用标签大段代码:标签a 标签 target 的几个属性_blank  新建窗口_self  默认属性   在相同的框架中打开被链接文档_parent  在父框架集中打开被链接文档_top   在整个窗口中打开

2016-02-28 15:17:27 356

原创 html语义化

1、什么是HTML语义化?  根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。2、为什么要语义化?为了在没有CSS的情况下,页面也能呈现出很好地内容结构、代码结构:为了裸奔时好看;用户体验:例如title、alt用于解释名词或解释图片信息、label标签的活用;有利于SEO:和搜索引擎

2016-02-28 15:15:57 376

原创 sass @extend

扩展单一选择器前面我们知道 %placeholder 不使用@extend显示调用是不会生成任何样式代码。那么在选择器中使用占位符一样。比如下面的代码:#context a%extreme { color: blue; font-weight: bold; font-size: 2em;}这段代码在不调用之前不产生任何代码,只有能过@extend调用之后才生成代码

2016-02-28 15:13:46 561

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除