javascript 普通類(lèi)型和對(duì)象的區(qū)別
1埃难、基本數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型
ECMAScript包括兩個(gè)不同類(lèi)型的值:基本數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型挣轨。
基本數(shù)據(jù)類(lèi)型指的是簡(jiǎn)單的數(shù)據(jù)段丙猬,引用數(shù)據(jù)類(lèi)型指的是有多個(gè)值構(gòu)成的對(duì)象。
2沐兵、常見(jiàn)的基本數(shù)據(jù)類(lèi)型:
Number、String 便监、Boolean扎谎、Null和Undefined碳想。基本數(shù)據(jù)類(lèi)型是按值訪(fǎng)問(wèn)的毁靶,因?yàn)榭梢灾苯硬僮鞅4嬖谧兞恐械膶?shí)際值胧奔。示例:
var a = 1;
var b = a;
b = 2;
console.log(a); // 1值
上面,b獲取的是a值得一份拷貝预吆,雖然龙填,兩個(gè)變量的值相等,但是兩個(gè)變量保存了兩個(gè)不同的基本數(shù)據(jù)類(lèi)型值拐叉⊙乙牛 b只是保存了a復(fù)制的一個(gè)副本。所以巷嚣,b的改變喘先,對(duì)a沒(méi)有影響。
3廷粒、引用類(lèi)型:
也就是對(duì)象類(lèi)型Object type窘拯,比如:Object 、Array 坝茎、Function 涤姊、Data等。
javascript的引用數(shù)據(jù)類(lèi)型是保存在堆內(nèi)存中的對(duì)象嗤放。引用類(lèi)型數(shù)據(jù)在棧內(nèi)存中保存的實(shí)際上是對(duì)象在堆內(nèi)存中的引用地址思喊。通過(guò)這個(gè)引用地址可以快速查找到保存中堆內(nèi)存中的對(duì)象。
var obj1 = new Object();
var obj2 = obj1;
obj2.name = "大衛(wèi)";
console.log(obj1.name); // 大衛(wèi)
說(shuō)明這兩個(gè)引用數(shù)據(jù)類(lèi)型指向了同一個(gè)堆內(nèi)存對(duì)象次酌。obj1賦值給onj2恨课,實(shí)際上這個(gè)堆內(nèi)存對(duì)象在棧內(nèi)存的引用地址復(fù)制了一份給了obj2,
但是實(shí)際上他們共同指向了同一個(gè)堆內(nèi)存對(duì)象岳服。實(shí)際上改變的是堆內(nèi)存對(duì)象剂公。