遇到雷點集合

一、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 

相關文章
相關標籤/搜索