javascript 复习笔记
http://www.cnblogs.com/jenry/archive/2010/12/08/1900150.html
Array:
arr.push() 添加元素到末尾并返回新长度; pop() 去除并返回末尾元素; shift() ; unshift()
sort(); reverse(); concat(); join();
concat()使用时要注意 a = a.concat(b); a.concat(b)不会直接作用于a;
splice(i,n,e1,e2,e,,,) 删除数组中i下标开始的n个元素,并从i下标插入e1,,,等元素
slice(i,n) 返回数组中从i开始的n个元素组成的段;
Time:
var d = new Date();
d.getTime();
indexOf可以用于查找数组元素
Math
Math.floor(Math.random()*4) 随机获得0,1,2,3;
浮点数的相减,会出现末尾偏差的情况; 0.3 - 0.2 = 0.099999998;
parseInt, parseFloat
Number() 强制类型转化为数字
toFixed(2) 保留两位小数
动态移除对象中的属性 obj.name = undefined; (其实无法真正删除,只是移除了对象属性的值)
删除动态属性要使用delete obj.name (之前没成功是用 delete obj.i ,i为变量时,要使用 delete obj[i]);
typeof() 返回对象的基本类型;
======================
javascript binding 赋值中的指针引用:(html5中待测试)
a = 10; b = a; b+=1; // a还等于1
a=[1,2]; b = a; b = [2,3]; // a等于[1,2]
注意: a=[1,2]; b=a; b[0] = 3; b[1] = 4; //a等于[3,4]
a=[1,2]; b=a; b = [3,4]; b[0] = 3; b[1] = 4; //a等于[1,2]
可以发现,在b=a时,并未开辟新的内存而是指针指向,当启用b=new obj时,b开辟空间; 但b[x]并不会开辟新的内存空间;
var a = new Array(); a = b; 这种句法貌似无效;
======================
面对对象:
var op = function(){}
op.name = "xxx";
var cp = new op;
此时的op.name是undefined, 需使用 op.prototype.name后,cp.name才能等于xxx, new 的对象,只具有原型链上的属性;