JS
惟是致良知
这个作者很懒,什么都没留下…
展开
-
Generator函数
Generator函数转载 2016-01-16 13:10:19 · 307 阅读 · 0 评论 -
单元测试Qunit
QUnitQUnit是一个强大的JavaScript单元测试框架,该框架是由jQuery团队的成员所开发。据说一开始是jQuery的一部分,后来独立于jQuery,是jQuery的官方测试套件。官方说法,QUnit是个强大简单易用的JavaScript测试框架。由于QUnit 脱胎于 jQuery,因此应用非常广泛。优点:1.因为自带JS和CSS,因此它有最漂亮最详细的测试界面。2原创 2017-07-12 16:52:53 · 549 阅读 · 0 评论 -
JS继承与原型链
原型和原型链在JS中,原型和原型链是实现继承的继承。因此,先说说原型和原型链。在JS中,每个函数都有一个原型属性 prototype 指向自身的原型对象。而该函数创建的对象都有一个属性 _proto_ 。该属性指向该原型。同时该原型对象也有个 _proto_ 属性,指向自己的原型,即原型对象的原型。这样一层层的指向,直到 Object 对象的原型,就形成了一条原型链。obj._prot原创 2017-05-22 16:20:05 · 463 阅读 · 0 评论 -
JavaScript之Object原型方法
Object在JS 中,对象都是有原型的,甚至原型链。不过最终都是指向一个最初的原型,即 Object 对象的原型。那这个原型里都有啥呢?下面一起来看下,首先在浏览器控制台输入 {},我们知道这是创建一个对象。从上面的图片我们发现对象的 原型属性 __proto__ 下面有 13 个属性或者函数(这里我用的是Chrome,不同浏览器可能不一样)。下面一一看下:原创 2017-07-15 12:36:56 · 3325 阅读 · 0 评论 -
浏览器存储
最近发现系统中用到了浏览器本地存储实现 cache。这里做一下整理。Web Storage 我们知道 H5 新增了一个在客户端本地保存数据的 Web Storage 功能。一共有两种:localStorage - 没有时间限制的数据存储sessionStorage - 针对一个 session 的数据存储而之前这些存储都是由 cookie 完成的。但是 cookie 有以下缺点原创 2017-07-14 14:30:24 · 328 阅读 · 0 评论 -
ES6新数据类型Symbol
Symbol 今年最火的莫过于 ES6 + Babel 了。ES6 引入了一些很实用很强大的特性和一些语法。今天说的 Symbol 就是其中一个。对于这个新特性,很多人估计很少使用它,尤其是可见性封装特别好的时候。但它也有很应用场景的。那Symbol 到底是个什么东西呢?数据类型首先它是 ES6 引入的一个 JS 数据类型。熟悉 JavaScript 的都知道,JavaScri原创 2017-07-17 09:37:14 · 1101 阅读 · 0 评论 -
JS之异步异常处理
异步异常最近用request call 一个webservice 做个测试。代码如下,request 函数被 try-catch 包括着,这样当失败时打印一些log。这里没有使用 Promise。var request = require('request');var url = "http://xxxx.xxx.com/ssss/sss";try { request(url, f原创 2017-09-06 23:00:02 · 3755 阅读 · 0 评论 -
浏览器对象
最近看了点非侵入式JavaScript,发现里面很多地方有提到浏览器检测和对象检测。当然实际开发中我们应该使用后者。浏览器检测实际上是基于一些浏览器对象的,这些对象是浏览器供应商为我们提供的,很多属性并不是标准,因此有些属性在各个浏览器中并不统一,且其值也不准确。因此使用时应该要格外小心。总的来看浏览器对象有四个,分别是 navigator、screen、history 和 location,原创 2017-09-20 15:17:39 · 464 阅读 · 0 评论 -
Javascript不可变对象
可变对象我们知道,JavaScript中对象是弱类型的。一般情况下,可以不受限制的为对象添加属性,修改属性,删除属性。大部分情况下,我们使用的都是可变对象。不可变对象对应的,我们不希望代码中某些对象被任意修改,比如添加、修改、删除等。这就是我们的不可变对象。JavaScript为我们提供了一些原生方法,借助它们可以讲一些可变对象转变成不可变对象。一共有三种:不可扩展,密封,冻结。不原创 2017-09-12 17:08:18 · 1838 阅读 · 0 评论 -
sinon.js的spy、stub和mock
sinon做测试的知道,在 Java 的单元测试中,不能获取实际对象时,我们可以使用 Mock/Stub 对我们的代码进行mock 等操作,更好的方便我们测试。像 EasyMock、JMock、Mockito 等可以很好的解决这些事情。里面引入了 spy 、stub、mock等概念。同样的,在前端测试中,我们也会遇到类似情况。Sinon.js 就是一个帮我们做这些事情的优秀库。官网原创 2017-07-03 11:39:19 · 8766 阅读 · 0 评论 -
Angular JS filter
场景一般需要先查询,再对查询结果进行过滤,这时就要用AngularJS的过滤器filter了。语法filter使用很简单,直接在表达式后面使用管道命令符 " | " 即可。比如:{ persons | filter:query }}排序过滤的同时我们可以还要对结果进行排序,使用orderBy 即可。如:‘{{ persons | filter:query | o原创 2016-07-01 11:44:30 · 732 阅读 · 0 评论 -
前端模块化
背景随着前端项目的复杂化,已经不再是之前的那种只有一些简单的表单的提交等功能。前端类库也层出不穷的出现。前端的代码也开始膨胀起来。而JavaScript是一个嵌入式的脚本语言,它没有为组织代码提供任何明显帮助,没有类的概念,当然也没有模块(module)了。模块化模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。前端代码模块化就是为原创 2016-05-12 18:19:53 · 1006 阅读 · 0 评论 -
gulp hot deploy 前端项目
gulp类似Bower,Yeoman,Webpack,grunt, gulp 是个新一代的前端项目构建工具,你可以使用它及其插件对你的项目代码进行编译,还可以压缩你的js、css、sass代码,甚至压缩你的图片,gulp 的API较少,因此非常容易学习。 优点gulp让简单的事情继续简单,复杂的任务变得可管理。另外它是基于stream的。通过Node.js强大的流,不需要写中间文件,可原创 2016-06-14 19:20:56 · 1379 阅读 · 0 评论 -
Promise
异步ES6 原生提供了 Promise 对象。异步模式在web编程中变得越来越重要,但实际使用时会遇到大量异步回调的书写,造成编程的复杂性。因此JS库添加了Promise。有时也称之为deferred。术语Promise,就是一个对象,用来传递异步操作的消息。这种模式不会阻塞和等待长时间的操作完成,而是返回一个代表了承诺的(promised)结果的对象。promise模式在任何时刻原创 2016-08-08 17:01:50 · 521 阅读 · 0 评论 -
Html事件
事件HTML的是基于事件驱动的。JS采用异步事件驱动编程模型,当文档、浏览器、元素或与之相关对象发生特定事情时,浏览器会产生事件。如果我们的JS代码关注了特定类型事件,那么它可以注册当这类事件发生时要调用的句柄-我们的回调函数。事件流事件流描述的是从页面中接收事件的顺序,比如有两个父子元素的div,点击子元素的div,这时候是子元素的div先触发click事件还是父元素先触发?目前原创 2017-04-13 19:28:34 · 453 阅读 · 0 评论 -
Jasmine单元测试
JasmineJasmine 作为一款流行的 JS 测试工具,很轻巧。虽然只有 20K 左右, 但功能挺丰富的。另外学过Junit的话,会感觉它跟 JUnit 很像。安装可以在github上下载最新的 Jasmine 安装包.下载地址: https://github.com/jasmine/jasmine/releases目录 ├── lib Jasmin原创 2017-05-15 20:05:40 · 1119 阅读 · 0 评论 -
callee和caller的作用与区别
递归function factorial(x) { return x<=1 ? 1 : x*factorial(x-1);}运行后发现它很好的完成了我们的要求。可是还是存在一个问题,万一哪天有人重构这个函数改了函数名呢?修改不方便甚至漏改。arguments.callee使用callee 避免hard code 函数名。function factorial(x) { re原创 2017-05-16 17:12:34 · 9293 阅读 · 0 评论 -
Mocha测试接口类型
参数之前我们写 Mocha测试用例的时候,主要用 describe(), it() 组织用例。这跟 Jasmine 风格是类似的。实际上,这只是 Mocha 支持的一种而已。在命令行中,有如下命令可供我们选择。-u, --ui specify user-interface (bdd|tdd|qunit|exports)默认情况下,Mocha使用 bdd 帮我们执行 describe原创 2017-06-29 17:36:59 · 1113 阅读 · 0 评论 -
测试框架Mocha
Mocha Mocha 是一种前端测试框架,由于它非常适合做 TDD(测试驱动开发),深受欢迎。官网:https://mochajs.org/所谓测试驱动开发(英语:Test-driven development,缩写为 TDD)是一种软件开发过程中的应用方法,由极限编程中倡导,以其倡导先写测试程序,然后编码实现其功能得名。AssertionMocha 本身自己已经提供了一原创 2017-06-19 16:56:43 · 5511 阅读 · 0 评论 -
HTTP 2.0 协议
HTTP说起HTTP 协议(超文本传输协议),很多人应该觉得很熟。不过随着HTTP2.0 的普遍应用,我们对其应该有更多的了解。HTTP是浏览器或其他客户端程序与Web服务器之间的应用层通信协议。基于TCP 协议的。主要经历HTTP 1.0, HTTP 1.1和 HTTP 2.0。HTTP 1.0我们知道,HTTP 是基于 TCP 连接的。每次建立连接,TCP 协议都会进行三次握手,获取一个可靠连...原创 2018-01-29 22:25:30 · 526 阅读 · 0 评论