js 引用型別和基本型別

2022-03-04 10:07:32 字數 1493 閱讀 4271

js中的資料型別有以下幾種:

基本型別:number boolean  string  undefined null  symbol

引用型別:object(array, function, date,正則物件,json物件)

基本型別的資料是存放在棧記憶體中的,而引用型別的資料是存放在堆記憶體中的

複製變數值  

基本型別:

var p = 1;

var p1 = p;

執行結果:

也就是說,基本型別的複製就是在棧記憶體中開闢出了乙個新的儲存區域用來儲存新的變數,這個變數有它自己的值,只不過和前面的值一樣,所以如果其中乙個的值改變,則不會影響到另乙個。

引用型別:

var object1 = new object();

var object2 = object1;

object2複製了object1的值,但是結果卻不是像基本型別複製一樣的

執行結果:

定義了乙個物件其實是在棧記憶體中儲存了乙個指標,這個指標指向堆記憶體中該物件的儲存位址。複製給另乙個物件的過程其實是把該物件的位址複製給了另乙個物件變數,兩個指標都指向同乙個物件,所以若其中乙個修改了,則另乙個也會改變。

object.name = 'jhon';

alert(object.name); //jhon

基本型別的資料是沒有屬性和方法的,引用型別才會有,但是為什麼string型別卻又那麼多方法呢?

var string = "aaa";

var string2 = string.substring(0)); //aaa

基本型別的確沒有方法和屬性,因為一旦建立了屬性或者方法就會被立刻銷毀,但是為了方便程式設計師對這類的基本型別資料比較方便的操作,在底層做了一些工作,其實這段**相當於:

var string = new string("aaa");

var string2 = string.substring(0);

string = null;

(1)建立乙個string型別的例項(使用 new 操作符建立的引用型別的例項,在執行流離開當前作用域之前都一直儲存在記憶體中。而自動建立的基本包裝型別的物件,則只存在於一

行**的執行瞬間,然後立即被銷毀 )

(2)在例項上呼叫指定方法

(3)銷毀該例項

經過這三步,字串值就變得和物件一樣了,在boolean  number中也是這樣

string  boolean  number 這三種型別也叫做  基本包裝型別

js 引用型別和基本型別

js中的資料型別有以下幾種 number boolean undefined object function string null 基本型別 number boolean string undefined null 引用型別 object function 基本型別的資料是存放在棧記憶體中的,而引...

js 基本型別 引用型別

1 基本的資料型別有 undefined,boolean,number,string,null.基本型別的訪問是按值訪問的,就是說你可以操作儲存在變數中的實際的值 基本型別的比較是值的比較。用 比較兩個不同型別的變數時會進行一些型別轉換。但是當兩個值的型別相同的時候,即使是 也相當於是 基本型別的變...

js基礎 基本型別和引用型別

js 種有兩種變數型別 基本型別和引用型別。可能會讓你聯想到 堆疊 或者 指標 的概念。包括 number string boolean null undefined 1 基本型別理解 等於又開了一家一模一樣的店,之後店內的所有東西和之前的沒啥關係 function stores 說明 把乙個基本型...