首頁>技術>

一個專注於web技術的80後

你不用拼過聰明人,你只需要拼過那些懶人 你就一定會超越大部分人!

標量型別的值 一般儲存在棧區中!

標量指: 整型、浮點、字串、布林值、等..

物件型別分為: 物件引用 和 物件體!

物件引用儲存在棧區中 、物件體儲存在堆區中、

1. 記憶體空間基本資料儲存分析圖1

注意: 一旦new一個物件,就必然會在記憶體中生成新的的區域來儲存物件資料

而且最重要的就是這個時候在記憶體中物件的地址是不一樣的 , 因為 new 會生成一個新的地址在棧區中

2.物件引用型別地址傳遞分析圖2

程式碼案例1:

 var json={     "username":"張三",     "age":22,     "fn1":function(){         console.log('我的名字叫'+this.username);     } }  //透過物件引用修改屬性值1 /*function fn2(obj){      obj.username="李四"; } fn2(json);*/  //透過物件引用修改屬性值2 var a=json; a.username='李四';  console.log(json.username);

分析圖如下

3.物件引用型別地址傳遞分析圖3

程式碼案例2:

 function Person(name,age,salary) {     this.name=name;     this.age=age;     this.salary=salary; }  function fn1(obj) {     obj.name='王武';     obj=new Person('李四',24,8000);     console.log(obj.name); }  var obj=new Person('張三',33,6000);  console.log(obj.name);  //結果: 張三  fn1(obj);               //結果 李四  console.log(obj.name);  // 王武

分析圖如下

物件引用 圖分析小結:

在js中, 普通變數值作為函式的引數就是 值傳遞在js中, 物件引用型別的變數作為函式的引數 就是 址傳遞! 所以 注意一下 這裡的值傳遞址傳遞一旦new一個物件 就一定會在堆區中建立一個空間,並賦予一個新地址 上面已經說過了!4.物件資料的比較

在js中、基本資料型別資料的比較 是值的比較 值相同就可以了、

物件型別的比較 要滿足兩個要求、 第一是值要相同、第二引用地址也要相同才行

案例程式碼:

 //--案例1 var a=[1,2,3]; var b=[1,2,3];  console.log(a==b);  //結果為false  雖然值一樣,但地址是不同的!   var a=[1,2,3]; var b=a; console.log(a==b);  //結果為true  因為b指向了a這個地址,並且值也能夠得到!  

原理圖 如下:

大家的支援就是我堅持下去的動力!

11
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • python資料結構之容器