基本類型
number,string都是基本數(shù)據(jù)類型,而基本類型存放在棧區(qū),訪問時(shí)按值訪問,賦值時(shí)按照普通方式賦值,當(dāng)基本類型賦值的時(shí)候,賦的是實(shí)際的值,a和b是沒有關(guān)聯(lián)的b由a賦值得到,相互獨(dú)立。
var a = 10;
var b = a
b=2
console.log(a) //10
console.log(b) //2
引用類型
對(duì)象和數(shù)組是通過引用來賦值的,引用類型指的是對(duì)象,可以擁有屬性和方法,并且我們可以修改屬性和方法。引用對(duì)象存儲(chǔ)的方式是:在棧中存放對(duì)象變量標(biāo)識(shí)名稱和該對(duì)象在堆中存放的地址,在堆中存放的數(shù)據(jù)。
對(duì)象使用的是引用賦值。當(dāng)我們把對(duì)象賦值給一個(gè)新的變量時(shí),賦的其實(shí)是該對(duì)象在堆中的地址,而不是堆中的數(shù)據(jù),也就是兩個(gè)對(duì)象指向的是一個(gè)存儲(chǔ)空間,無論哪個(gè)對(duì)象發(fā)生變化,另一個(gè)也會(huì)隨之改變,兩個(gè)對(duì)象是聯(lián)動(dòng)的
var arr = [1,2]
var new_arr = arr
new_arr[0] = 5
console.log(arr) //[2,5]
console.log(new_arr) //[2,5]
對(duì)此對(duì)象調(diào)用
對(duì)象調(diào)用函數(shù)this的指向?qū)ο螅瑃his.a就等于2如果多次調(diào)用,對(duì)象屬性引用鏈只有上一層或者說是最后一層在調(diào)用位置中起作用。
function fn(){
console.log(this.a)
}
var obj = {
a:2,
foo:fn
}
var obj1 = {
a:1,
obj:obj
}
obj1.obj.fn() //2