1、chrom里面用drawImage无效,最后发现是因为图片没有加载就操作了。
放在window.onload内即可、
2、for in 问题
对于数组来说 for (var ele in arr) ele 是arr的索引
对于对象来说 for(var ele in obj) ele是obj的属性名
3. js里所有函数参数都是形参
var a = 1; function test(a){ a = a+1; } console.log(a); //1
4.关于对象复制的问题
var p1 = new Person();
这个表达式做了什么?
首先 new xxx() 就是在内存中创建了一个 object
var p1 = xxx 那个 现在 p1 这个变量保存了 这个object的地址
到这里开始 访问 p1 就是访问这个object
p1.age = 25; 这个 就是 object.age = 25
var p2 = p1; //这个吧p1 的值 赋予 p2 (因为p1 是指向一个对象的变量 所以 p2 现在 也指向 这个变量)
p2.age = 51; 这个就是 object。age = 51
//一直到这里位置
现在内存有一个对象 object(new Person()创建的) 2个变量 p1 p2 (都指向 那个 object)
p2 = null; /这里 p2 指向了null 但是p1 还是指向那个 object
数组的浅复制
var array2;
array2 = array1;
array1.length = 0;
alert(array2); //返回为空
这种做法是错的,因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类
型。array2得到的是引用,所以对array1的修改会影响到array2。
二、 使用slice()
可使用slice()进行复制,因为slice()返回也是数组。
var array1 = new Array("1","2","3");
var array2;
array2 = array1.slice(0);
array1.length = 0;
alert(array2); //返回1、2、3
三、 使用concat()
注意concat()返回的并不是调用函数的Array,而是一个新的Array,所以可以利用这一点进行复制。
var array1 = new Array("1","2","3");
var array2;
array2 = array1.concat();
array1.length = 0;
alert(array2); //返回1、2、3