遇到雷点集合

一、chrom里面用drawImage无效,最后发现是由于图片没有加载就操做了。javascript

放在window.onload内便可、java

 

二、for in 问题c#

  对于数组来讲 for (var ele in arr) ele 是arr的索引数组

  对于对象来讲 for(var ele in obj) ele是obj的属性名函数

 

3. js里全部函数参数都是形参spa

var a = 1;
function test(a){
 a = a+1;
}
console.log(a); //1

 

4.关于对象复制的问题code

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对象


数组的浅复制blog

1、 错误实现
var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1; 
array1.length = 0; 
alert(array2); //返回为空

这种作法是错的,由于javascript分原始类型与引用类型(与java、c#相似)。Array是引用类索引

型。array2获得的是引用,因此对array1的修改会影响到array2。

2、 使用slice()

可以使用slice()进行复制,由于slice()返回也是数组。

var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1.slice(0); 
array1.length = 0; 
alert(array2); //返回一、二、3  

3、 使用concat()

注意concat()返回的并非调用函数的Array,而是一个新的Array,因此能够利用这一点进行复制。

var array1 = new Array("1","2","3"); var array2; array2 = array1.concat(); array1.length = 0; alert(array2); //返回一、二、3 

相关文章
相关标签/搜索