JavaScript编程
holdindex
程序猿一枚。
展开
-
快速理解掌握node.js 字符编码,确码过程 以及base64编解码原理
var buf1 = new Buffer('a','ascii'); // 'a' -> ascii编码 -> 61 存在计算机中console.log(buf1);var b = buf1.toString('base64'); // 61 -> 用base64解码 -> 得到字符串 'YQ=='console.log(b);var buf2 = new Buffer(b,'b原创 2014-09-02 11:10:18 · 2259 阅读 · 0 评论 -
JavaScript并发: 不要阻塞 JavaScript event queue.
/** * Created by CAIYAO365 on 2014/5/8. */function fn() { setTimeout(function(){ console.log("fn") while(true){ //阻塞了 event queue ,fn2 里的异步回调被阻塞了. } },100)}functi原创 2014-05-08 08:32:25 · 1158 阅读 · 0 评论 -
JavaScript 避免同步地调用异步函数的回调函数
var saveFile ={};function asyncFn(path, say){ //回周函数say 既可以被同步调用,也可以被异步调用,这很难判断结果 if(savaFile[path]){ say('文件保存成功'); //这里,同步的调用了 say return ; } saveFile[path] = require('原创 2014-05-07 17:11:35 · 1752 阅读 · 0 评论 -
JavaScript中 逗号运算符以及eval
JavaScript中逗号运算符, 运算符使它两边的表达式以从左到右的顺序被执行,并获得右边表达式的值。原创 2014-04-21 22:15:41 · 1040 阅读 · 0 评论 -
JavaScript:让构造器函数 不管用不用new 都可以生成 正确的对象。
/** * Created by CAIYAO365 on 2014/5/6. *///让你的构造器不管用不用 new 都可以 生成想要的对象function User(name, passwordHash) { if (!(this instanceof User)){ return new User(name,passwordHash); } t原创 2014-05-06 09:03:20 · 1229 阅读 · 0 评论 -
javascript 中的类型体系
一类: typeof : underfined, number,boolean,string,function原创 2014-04-05 19:05:49 · 693 阅读 · 0 评论 -
JavaScript 子类调用父类构造器实现继承
/** * Created by liveinjs on 2014/5/7. */function C(){ this.name = "C";}function C2() { C.call(this);//这个必须放在第一行,不然 它会 让 this.name = "C" this.name = "C2"; this.father = 'C';原创 2014-05-07 09:09:18 · 2311 阅读 · 0 评论 -
javascript 理解 变量 函数 的 hoisting
/* 声明提前 , 函数声明会覆盖掉变量声明*/// var a;//function a(){return '}'console.log(a()); //输出 s/*声明提前*/function a(){return 's'};var a = 1;console.log(a); //输出 1原创 2014-04-21 15:27:04 · 737 阅读 · 0 评论 -
javascript: null >= 0 //true
null > 0 // null 尝试转型为number , 则为0 . 所以结果为 false, null >= 0 // null 尝试转为number ,则为0 , 结果为 true. null == 0 // null在设计上,在此处不尝试转型. 所以 结果为false.原创 2014-04-21 11:50:19 · 705 阅读 · 0 评论 -
Node.js global 变量 (全局命名空间!)
a = "bcd";global.a = "efg"console.log(a);//efg原创 2014-04-21 08:32:58 · 1047 阅读 · 0 评论 -
javascript 对象结构 代理模式
参考资料: http://www.joezimjs.com/javascript/javascript-design-patterns-proxy/原创 2014-03-26 08:47:50 · 615 阅读 · 0 评论 -
Javascript:提取 对象的方法作为高阶函数的参数 要注意的
//提取对象的方法作为函数var buffer = { entries:[], add:function(s) { this.entries.push(s); }, concat: function() { return this.entries.join(""); }};function a(fn,a){ fn原创 2014-04-30 17:41:02 · 995 阅读 · 0 评论 -
JavaScript :巧用类数组对象生成空数组
var a = Array.apply(null,{length:10,'1':1}) // {length:10,'1':1} 为 类数组对象,原创 2014-05-05 14:59:36 · 1572 阅读 · 0 评论 -
javascript code unit 与 code pint
javascritp 中的字符串是 UTF-16 编码的 ,一个char 16位 ,BMP原创 2014-04-20 10:13:33 · 891 阅读 · 0 评论 -
javascript JSON parse stringify 注意!
JSON.stringify() ,可以解析JSON,但是要注意:原创 2014-04-19 08:33:25 · 958 阅读 · 0 评论 -
javascript 对象行为模式 迭代器模式
Sequentially access the elements of a collection without knowing theinner workings of the collection.原创 2014-04-08 15:04:33 · 645 阅读 · 0 评论 -
异步加载与延迟执行
非阻塞脚本的秘密在于,等页面完成加载之后,再加载JavaScript 源码。从技术角度讲,这意味着在window 的load 事件发出之后开始下载代码。有几种方法可以实现这种效果。原创 2014-04-23 10:23:25 · 1033 阅读 · 0 评论 -
处理 无效的 utf-16 编码
const replacement = '\ufffd';// https://gist.github.com/mathiasbynens/bbe7f870208abcfec860const loneSurrogates = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|([^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g;// string转载 2014-06-18 21:24:33 · 3136 阅读 · 0 评论 -
每一个程序员必须掌握的知识,字符集与字符编码.
基础知识计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。字符集(Charset):是一个系统原创 2014-07-05 17:43:04 · 1878 阅读 · 0 评论 -
关于base64编码的原理及实现
我们的图片大部分都是可以转换成base64编码的data:image。 这个在将canvas保存为img的时候尤其有用。虽然除ie外,大部分现代浏览器都已经支持原生的基于base64的encode和decode,例如btoa和atob。(将canvas画布保存成img并强制改变mimetype进行下载,会在下一篇记录)但是处于好奇心,还是驱使我去了解下base64编码的原理。以便也在不支持转载 2014-07-05 17:27:51 · 850 阅读 · 0 评论 -
JavaScript 中的eval
如何不让eval 创建本地变量? “use str”原创 2014-05-31 11:28:18 · 717 阅读 · 0 评论 -
函数的声明,函数的引用,函数的调用
深入理解,函数的声明,函数的引用,函数的调用原创 2014-05-27 16:11:55 · 897 阅读 · 0 评论 -
用一个闭包定义对象的属性的例子: JavaScript函数重载
function addMethod(obj, name, fn){ var old = obj[name];//保存obj现有的方法 obj[name] = function(){ //重新定义name属性 if(fn.length == arguments.length){ return fn.apply(this,arguments)原创 2014-05-27 14:48:48 · 963 阅读 · 0 评论 -
点号「.」在JavaScript中的语义
语义1、表示算术中的小数点(浮点数),如 2.5语义2、取对象属性、方法,如 [].push(2)原创 2014-06-09 18:09:03 · 1392 阅读 · 0 评论 -
Avoid Long-Running code blocks
用setTimeout() 避免 长运行脚本原创 2014-05-25 15:54:38 · 914 阅读 · 0 评论 -
Partially applying functions
function a() { console.log(arguments)}function b() { var args = Array.prototype.slice.call(arguments); return function(){ a.apply(this, args.concat(Array.prototype.slice.call(arg原创 2014-05-21 16:42:50 · 911 阅读 · 0 评论 -
javascript 元编程的概念:程序能编写程序
javascript 可是操作自身(反射)原创 2014-05-21 15:58:49 · 1604 阅读 · 0 评论 -
提升JavaScript递归效率:Memoization技术
function memoizer(fundamental, cache) { cachecache = cache || {}; var shell = function(arg) { if (! (arg in cache)) { cache[arg] = fundamental(shell, arg);原创 2014-05-20 19:53:16 · 1407 阅读 · 0 评论 -
AOP 的概念
AOP is a technique by which code is injected and executed at runtime to handle “cross-cutting” things like logging, caching, security,and so on.原创 2014-05-21 15:40:33 · 712 阅读 · 0 评论 -
JavaScript AOP编程 很明了的一个例子
AOP面向切面编程 var AOP=function(){}; AOP.prototype={ before:function(target,method,advice){ var old=target[method];转载 2014-05-19 18:20:57 · 780 阅读 · 0 评论 -
BDD 与 TDD
1.BDD 与 TDD 并不相排斥2.原创 2014-05-19 16:55:46 · 1229 阅读 · 0 评论 -
Node.js liveinjs-gbk 模块 实践总结(一):javascript 的位运算.
原码: 例如: 00000000 00000000 00000000 00000001, 32位原码原创 2014-04-18 15:56:43 · 1062 阅读 · 0 评论 -
说说 javascript 中的字符串 与 unicode , utf8, gbk
准备下原创 2014-04-18 16:36:37 · 908 阅读 · 0 评论 -
Node.js 中 变量声明 带var 和不带var 的情况
var name = "abc2"先复习下变量的重复声明,变量的赋值,javascript 的声明提前******************************************name = "abc";var name = "abc2"重复声明,相当于:var name = "abc2";*****************************原创 2014-01-13 22:09:47 · 3300 阅读 · 0 评论 -
学习 javascript 模板引擎开发
模板语法还是用javascript本身最好!1. 编译器: 结合 dataObject 把 tpl 编译成 html;2. 错误器: 处理错误, 正常运行。原创 2014-01-12 17:11:52 · 803 阅读 · 0 评论 -
Javascipt 数据结构 之 Stack
Stack 是一种特殊的数据类型或集合,Stack 实现了先进先出的操作( LIFO -- Last In First Out )主要操作: 成员的增加 称为push, 成员的删除称为 pop. /** * Created by hatmore on 13-12-24. */function Stack() { var top = null; var c原创 2013-12-24 10:04:43 · 1271 阅读 · 0 评论 -
javascript 数据结构 之队列
队列是一种集合,队列里的对象按一定的顺序排列 ,遵循先进选出。function Queue() { var count = 0; var tail = null; var head = null; this.GetCount = function () { return count; } /** * @par原创 2013-12-25 20:57:21 · 1130 阅读 · 0 评论 -
javascript 数据结构 之 单链表
/** * Created by CAIYAO365 on 13-12-26. */function LinkedList() { var count = 0; var head = null; this.getCount = function () { return count; } this.DisplayAll = func原创 2013-12-26 10:20:01 · 1180 阅读 · 0 评论 -
Javascript/Node.js 中的 this
this 绑定: 作为函数调用; this 指向全局对象作为方法调用: this 指向该方法所属对象例如:var o = {}o.name = "name";o.f = function abc() { function efg() { console.log(this); } efg();//efg 作为函数被调用, 里面的原创 2013-12-26 12:40:03 · 1043 阅读 · 0 评论 -
javascript new Object(value)
一:Object的带参数构造函数var obj = new Object(value); value是js中的元类型,返回的是该元类型的包装类。var aNumber= new Object(1);var aBoolean = new Object(true);var aString = new Object("str"); //与java不同,js原创 2014-01-10 10:51:22 · 1442 阅读 · 0 评论