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