随笔分类 - javascript
摘要:1. Buffer1.1 创建var buf1 = new Buffer(100);var buf2 = new Buffer([0,1,2]);var buf3 = new Buffer('hello world','utf8');1.2 string相互转换var buffer = new Bu...
阅读全文
摘要:1.1 请求方法的判断var http = require('http');var server = http.createServer(function(request,response){ switch(request.method){ case 'POST': update(request,r...
阅读全文
摘要:1. 网络编程1.1 TCP//servervar net = require('net');var server = net.createServer(function(socket){ socket.on('data',function(data){ socket.write('hello wo...
阅读全文
摘要:var chunks = [];var size = 0;res.on('data',function(chunk){ chunks.push(chunk); size+= chunk.length;});res.on('end',function(){ var buf = Buffer.conca...
阅读全文
摘要:1. 基础知识1.1 全局作用域及函数1.1.1 全局作用域在nodejs中,定义了一个global对象,代表nodejs中的全局命名空间,任何全局变量、函数或对象都是该对象的一个属性值1.1.2 setTimeout函数与clearTimeout函数setTimeout函数的使用方法如下:标示延迟...
阅读全文
摘要:1. 状态模式var offLightState = function(light){ this.light = light;}offLightState.prototype.buttonWasPressed = function(){ console.log('弱光'); this.light.s...
阅读全文
摘要:1. 装饰者模式给对象动态增加职责的方式称为装饰者模式。Function.prototype.before = function(beforefn){ var _self = this; return function(){ beforefn.apply(this,arguments); retur...
阅读全文
摘要:1. 中介者模式所有对象通过中介者进行通信var playDirector = (function(){ var players = []; var options = {}; options.add = function(p){ players.push(p); } options.die = f...
阅读全文
摘要:1. 职责链模式将对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。var chain = function(fn){ this.fn = fn; this.successor = null;}chain.prototype.setNextSuccessor = function(su...
阅读全文
摘要:1. 发布-订阅模式var observe = (function(){ var events = {}, listen, trigger, remmove; listen = function(key,fn){ if(!events[key]){ events[key] = []; } event...
阅读全文
摘要:1. 单例模式单例模式的核心是确保只有一个实例,并提供全局访问。function xx(name){};Singleton.getInstance = (function(){ var instance = null; return function(name){ if(!instance){ in...
阅读全文
摘要:1. 策略模式策略模式定义一系列的算法,把它们封装起来,并且可以互相替换。var strategies = { isNonEmpty: function(value,errMsg){ if(value === ''){ return errMsg; } }, minLength:function(v...
阅读全文
摘要:1. this,call&apply1.1 thisthis是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。1.1.1 普通函数调用这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。请看下面这段代码,它的运行结果是1。...
阅读全文
摘要:1. 新兴的APIrequestAnimationFrame():是一个着眼于优化js动画的api,能够在动画运行期间发出信号。通过这种机制,浏览器就能够自动优化屏幕重绘操作Page Visibility API:让开发人员知道用户什么时候正在看着页面,而什么时候页面是隐藏。Geolocation ...
阅读全文
摘要:1. 最佳实践l 来自其他语言的代码约定可以用于决定何时进行注释,以及如何进行缩进,不过JavaScript需要针对其松散类型的性质创造一些特殊的约定l javascript应该定义行为,html应该定义内容,css应该定义外观l 这些职责上的混乱会导致难以调试的错误和维护上的问题l javascr...
阅读全文
摘要:1. 数据存储1.1 cookieHTTP Cookie, cookie,最初用来在客户端存储回话信息。(1). 限制,不同浏览器对特定域名下的cookie 的个数有限制,每个域名下最好不要操过20个cookie(2). cookie的构成名称:一个唯一确定cookie的名称,不区分大小写,cook...
阅读全文
摘要:1. 高级技巧1.1 函数l 可以使用惰性载入函数,将任何分支推迟到第一个调用函数的时候l 函数绑定可以让你创建始终在指定环境中运行的函数,同时函数柯里化可以让你创建已经填写了某些参数的函数l 将绑定和柯里化组合起来,可以在任意环境中以任意参数执行函数的方法1.2 对象ECMAScript5允许通过...
阅读全文
摘要:1. Ajax与Comet1.1 XMLHttpRequest对象IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的。因此在IE中可能存在MSXML2.XMLHttp, MSXML2.XMLHttp.3.0, MSXML2.XMLHttp.6.0,要支持...
阅读全文
摘要:1. JSONJSON是一种数据格式,存在以下三种类型的值:l 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null,不支持 undefined,例如:5,’hello world’l 对象:对象作为一种复杂数据类型,表示一组无须的键值对,例如:{‘nam...
阅读全文
摘要:1. E4XE4X是对ECMAScript的一个扩展,l 与DOM不同,E4X只用一个类型节点来表示XML中的各个节点l XML对象中封装了对所有节点都有用的数据和行为。为了表示多个节点的集合,这个规范定义了XMListl 另外两个类型,Namespace和QName,分别表现命名空间和限定名
阅读全文