看以下現象:
var obj = ;
var obj2 = obj;
obj2.a = 3;
obj //
obj2 //
這種現象大家都不陌生,因為obj和obj2指向的是同乙個物件,兩者相互影響,那如果再往深處挖掘,這是乙個什麼樣的過程呢,這個涉及到棧堆儲存的概念。
在js中,按儲存方式可將資料型別分為兩種:
一是基本資料型別(string、number、undefined、null、boolean、symbol).
二是引用資料型別(object),除了基本資料型別外,其餘都是引用資料型別,包括函式、陣列、正規表示式等。
基本資料型別大小固定,記憶體大小可分配,是直接按值存放的,訪問的時候也是直接訪問值,這種型別的資料直接儲存在棧裡。
引用資料型別屬性可改,大小不固定,它在棧只儲存乙個指標,而實際內容儲存在堆裡,存在棧裡的指標指向堆裡的實際內容,當被訪問的時候,是先訪問指標,然後沿著指標的指向訪問到堆裡的實際內容。
所以,上面的**操作是這樣乙個過程:
var obj = ; // obj的指標指向
var obj2 = obj; // 將obj的指標賦值給obj2,此時obj2的指標也指向
obj2.a = 3; // 將的a屬性值改為3
因為obj和obj2的指標都指向同乙個堆位址,所以此時兩者都為 資料型別 基本資料型別和引用資料型別
一.分類 1,五種簡單資料型別 基本資料型別 number,string,boolean,null,undefined,新增symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。1 undefined 宣告的變...
基本資料型別和引用資料型別
資料型別 基本資料類 1.數值型 整數 byte short int long 浮點 float double 2.字元型 char 3.布林型 boolean 引用資料型別 1.類 class 2.介面 inte ce 3.陣列 array 基本資料型別 它的值是乙個數字 字元或布林值,變數指向具...
基本資料型別 引用資料型別
一 基本資料型別 基本資料型別 number string boolean null undefined symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。二 引用資料型別 引用資料型別 object 在j...