node.js中的querystring.unescape方法使用说明
方法说明:
该方法使可用来重写 querystring.parse
语法:
querystring.unescape
接收参数:
无
源码:
// a safe fast alternative to decodeURIComponent
QueryString.unescapeBuffer = function(s, decodeSpaces) {
var out = new Buffer(s.length);
var state = 'CHAR'; // states: CHAR, HEX0, HEX1
var n, m, hexchar;
for (var inIndex = 0, outIndex = 0; inIndex <= s.length; inIndex++) {
var c = s.charCodeAt(inIndex);
switch (state) {
case 'CHAR':
switch (c) {
case charCode('%'):
n = 0;
m = 0;
state = 'HEX0';
break;
case charCode('+'):
if (decodeSpaces) c = charCode(' ');
// pass thru
default:
out[outIndex++] = c;
break;
}
break;
case 'HEX0':
state = 'HEX1';
hexchar = c;
if (charCode('0') <= c && c <= charCode('9')) {
n = c - charCode('0');
} else if (charCode('a') <= c && c <= charCode('f')) {
n = c - charCode('a') + 10;
} else if (charCode('A') <= c && c <= charCode('F')) {
n = c - charCode('A') + 10;
} else {
out[outIndex++] = charCode('%');
out[outIndex++] = c;
state = 'CHAR';
break;
}
break;
case 'HEX1':
state = 'CHAR';
if (charCode('0') <= c && c <= charCode('9')) {
m = c - charCode('0');
} else if (charCode('a') <= c && c <= charCode('f')) {
m = c - charCode('a') + 10;
} else if (charCode('A') <= c && c <= charCode('F')) {
m = c - charCode('A') + 10;
} else {
out[outIndex++] = charCode('%');
out[outIndex++] = hexchar;
out[outIndex++] = c;
break;
}
out[outIndex++] = 16 * n + m;
break;
}
}
// TODO support returning arbitrary buffers.
return out.slice(0, outIndex - 1);
};
node.js中的events.emitter.removeAllListeners方法使用说明
方法说明:移除所有监听器,如果指定event,则将移除指定事件的所有监听器。语法:emitter.removeAllListeners([event])接收参数:event事件类型,支持多个例
node.js中的events.emitter.listeners方法使用说明
方法说明:注册了指定event的所有监听器将被作为数组返回。语法:emitter.listeners(event)接收参数:event指定事件例子:server.on('connection',function(stream){consol
node.js中的events.emitter.removeListener方法使用说明
方法说明:移除指定事件的某个监听器。语法:emitter.removeListener(event,listener)接收参数:event(string)事件类型listener(function)已注册过的监听器例子:varcallb
