在JavaScript中引用類型和值類型的區別
一、存儲方式不一樣
基本數據類型
變量存儲的是簡單的數據段,存儲的是具體的值,是輕量級的數據存儲方式
引用類型
引用類型的值,可以由多個值構成的對象,引用類型的變量存儲的是對象引用地址。引用類型是重量的數據存儲方式,分配在堆內存,頻繁創建對象有損性能。
引用類型(N多) Object、Array、Date、Function、……
二、動態屬性不一樣
1、引用類型能動態添加屬性
var person=new Object();
person.name="jack";
person.age=20;
console.log("姓名:%s,年齡:%d",person.name,person.age);
結果
說明
屬性動態添加成功
2、值類型不能添加
三、賦值的方式不一樣
1、值類型,拷貝變量的內容
值類型,拷貝變量的內容
var num=10;
var num2=num;//創建新的空間,拷貝num的值到num2。
這個兩個變量的內容是互不影響的,num2的內容是num的一個副本。類似操作系統的復件
var num=10;
var num2=num;
num2=100;//並不會影響到num的值
console.log("num=%d num2=%d",num,num2);
結果
2、引用類型,拷貝引用地址
var person1=new Object();
person1.age=18;
var person2=person1;//拷貝引用地址,給變量person2,於是同時指向一個對象
person2.age=30;//事實上也是person1指向的那個對象
console.log("person1.age=%d person2.age=%d",person1.age,person2.age);
結果
說明
兩個變量都指向同一個對象,對象就是希望被變量引用的,引用的數量也是沒有限制的。
在JavaScript中引用類型和值類型的區別