一、數組的存儲 1、當聲明一個變數時,var a = 111; 在後臺電腦翻譯時,var聲明 a變數 所以此時會產生一個棧記憶體,變數 a 的初始值為undefined,然後 = 111 ; undefined消失,111的值被賦值給了a。如果多個變數賦值的話,棧記憶體的執行順序是先進後出的順序。也叫 ...
一、數組的存儲
1、當聲明一個變數時,var a = 111; 在後臺電腦翻譯時,var聲明 a變數 所以此時會產生一個棧記憶體,變數 a 的初始值為undefined,然後 = 111 ; undefined消失,111的值被賦值給了a。如果多個變數賦值的話,棧記憶體的執行順序是先進後出的順序。也叫做壓棧。棧記憶體屬於基礎數據類型,存入的是一個值。
2、當聲明一個數組時,var arr = ['1','2','3']; 後臺電腦是將arr的值以地址的形式存入在堆記憶體中,堆記憶體的可以隨時取值,沒有順序,堆記憶體屬於引用數據類型,存入的是一個地址
1、 2、
3、淺copy
<script>
var a = 111;
var arr = a;
a = 100;
var arr = ['1','2',a];
console.log(arr);
</script>
此時a的值在棧記憶體中,同時也以地址的形式在堆記憶體的arr中,所以當a重新賦值時,arr數組的值也會改變
所以淺copy,copy的不是值,而是地址,其中一個值發生改變,另一個值也會隨之改變
二、Object 對象
方法一:var 對象名稱 = new Object();
方法二:var 對象名稱 = {'鍵':‘值’,'鍵':‘值,'鍵':‘值,'鍵':‘值};
<script>
//第一種創建方式
var car = new Object();
//屬性
car.color = 'black';
car.band = 'hongqi';
car.price = '20w';
//方法
car.run = function(){
console.log(this.band+'百公裡5s');
}
car.stop = function(){
console.log('停止');
}
//查看對象
console.log(car);
//查看屬性
console.log(car.color);
//外部調用屬性
var name = 'band';
console.log(car[name]);
//調用方法
car.run();
//第二種創建方式 字面量形式
var dog = {
// 屬性
'name':'dahuang',
'age':6,
'gender':'nma',
// 方法
'eat':function(){
console.log('吃飯');
},
'run':function(){
console.log('跑');
}
}
console.log(dog);
//屬性
console.log(dog.name);
//方法
dog.run();
</script>
在調用屬性及方法時, . 的後面不能識別外部變數,當使用 [ ] 時,可以在中括弧里添加變數即可調用。