基本型別值:指的是儲存在棧記憶體中的簡單資料段;
引用型別值:指的是那些儲存在堆記憶體中的物件,意思是,變數中儲存的實際上只是乙個指標,這個指標執行記憶體中的另乙個位置,由該位置儲存物件;
基本型別值:按值訪問,操作的是他們實際儲存的值;
引用型別值:按引用訪問,當查詢時,我們需要先從棧中讀取記憶體位址,然後再順藤摸瓜地找到儲存在堆記憶體中的值;引用型別的值儲存在記憶體中,由於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...