Javascript中的基礎型別與引用型別

2021-09-17 03:23:16 字數 2262 閱讀 4901

基本型別值:指的是儲存在棧記憶體中的簡單資料段;

引用型別值:指的是那些儲存在堆記憶體中的物件,意思是,變數中儲存的實際上只是乙個指標,這個指標執行記憶體中的另乙個位置,由該位置儲存物件;

基本型別值:按值訪問,操作的是他們實際儲存的值;

引用型別值:按引用訪問,當查詢時,我們需要先從棧中讀取記憶體位址,然後再順藤摸瓜地找到儲存在堆記憶體中的值;引用型別的值儲存在記憶體中,由於js不允許直接訪問記憶體,在操作的時候,其實操作的是物件的引用

基本型別:undefined、null、boolean、string、number

引用型別:function、object、array

基本型別變數的複製:從乙個變數向另乙個變數複製時,會在棧中建立乙個新值,然後把值複製到為新變數分配的位置上;

引用型別變數的複製:複製的是儲存在棧的指標,將指標複製到為新變數分配的位置上,而這個指標副本與原指標執行的是儲存在堆中的物件。複製結束後,兩個變數指向的是同乙個物件,因此操作其中的任何乙個將會影響另乙個;

typeof操作符是檢測基本型別的最佳工具

如果變數值是null或者物件,返回的是object

typeof null                 // "object"

typeof undefined // "undefined"

typeof 1 // "number"

typeof "1" // "string"

typeof true // "boolean"

typeof {} // "object"

typeof // "object"

typeof function() {} // "function"

instanceof操作符用於檢測引用型別,可以檢測它到底是什麼型別的例項

如果變數是給定引用型別的例項,instanceof將會返回true

console.log(objects instanceof object)        // objects是否是object的例項

console.log(arrays instanceof array) // arrays是否是array的例項

通過以下兩個例子解釋值傳遞與引用型別傳遞:

var a = 1;

function add(b)

add(a);

console.log(a); // a == 1,a的值沒有發生變化

值傳遞的特性:

1.只將值進行傳遞,與原變數無關,值會被複製乙份,儲存在記憶體中另乙個不同的位置;

2.當我們修改傳遞後的值時,修改的是記憶體中新的位置,而原變數不會被影響,還是原來的值;

3.這種情況往往出現在基本型別變數中;

var a = [1];

function add(b)

add(a);

console.log(a); // [1,2] 說明原始的a的值已經被改變了

引用傳遞的特性:

1.將記憶體位址進行傳遞,相當於把原變數完整的傳遞過來;

2.當我們修改傳遞後的值時,修改的是記憶體中原來的位置,會對原變數造成影響;

3.這種情況往往出現在物件中;

Javascript定義基礎類

1.工廠方式 function car return ocar var car1 car var car2 car 呼叫此函式時將建立新物件,並賦予它所有的屬性和方法。使用此函式可以建立2個屬性完全相同的物件。當然可以通過給它傳遞引數來改版這種方式。function car color,door r...

javascript中的類式繼承

輔助函式,讓你可以將新函式繫結到物件的prototype上 為function.prototype增加乙個公有方法。所有由類的擴充的函式都可以使用它,它返回this,當我寫乙個不需要返回值的方法時,我通常讓它返回this,這顧慮到了串聯樣式 function.prototype.method nam...

JavaScript中基礎的DOM操作

getelementid id 通過id獲取元素 id為乙個元素的id,因為id是唯一的,所以可以通過id找到元素 object getelementid id 來獲取物件 innerheml屬性 獲取或者替換html中的內容 object.innerhtml 獲取元素中的內容 object.sty...