1. 程式人生 > >javascript權威指南(6)隨筆

javascript權威指南(6)隨筆

        
  包裝物件:存取字串、數字或布林值的屬性時,建立的臨時物件稱作包裝物件。它只是偶爾用來區分
 字串值和字串物件,數值和數值物件,布林值和布林物件。通常,包裝物件只是被看做是一種實現細節,而不用特別關注。由於字串、數值、布林值的屬性都只是只讀的,並且不能給他們定義新的屬性,因此需要明白他們是有別於物件的。需要注意的是:可通過String()、Number()、Boolean()建構函式來顯示的建立包裝物件。 javascript會在必要時將包裝物件轉換為原始值。“==”等等運算子將原始值和包裝物件視為相等。“===”全等運算子視為不相等。可以通過“typeof”運算子檢視其原始值和包裝物件的不同。
 
          不可變的原始值和物件的引用:
物件為引用型別,"string、number、boolean、undefined、null"為基本型別。

         Javascript的型別轉換:


在實際開發中,會常見如下型別轉換方式:x + " " // 轉為為字串,等價於String(x); + 3 或 x - 0 //轉換為數字,等價於Number(x);!!x 轉為為布林型別,等價於Boolean(x);

判斷值:null undefined "" false 0 NaN 均為false

中斷迴圈:

break : 立即退出最內側迴圈或者switch語句。當整個陣列遍歷完成以後會正常退出迴圈,如果找到需要查詢的陣列,則使用break語句退出迴圈。

for (var i = 0; i < a.length; i++) {

if (a[i] === target) break

}

嚴格模式(use strict)和非嚴格模式區別(前三點重要)

*在嚴格模式中禁止使用with語句

*在嚴格模式中,所有的變數都需要提前宣告,如果給一個未宣告的變數、函式、函式引數、catch從句引數或全域性物件的屬性賦值,將會丟擲錯誤異常。

(非嚴格模式中,這種隱式宣告的全域性變數的方法是給全域性物件新新增一個新屬性)。

*在嚴格模式中,呼叫的函式(不是方法)中的一個值是“undefined”。

(非嚴格模式中,呼叫的函式中的this的值總是全域性物件)。可以利用這個特性判斷js是否支援嚴格模式。

var hasStrictMode = (function () {'user strcit'; return this === undefined} ()) ;

*在嚴格模式中,當通過call()和apply()來呼叫函式時,其中的this值就是通過call()和apply()傳入的第一個引數

非嚴格模式中,null和undefined值被全域性物件和轉換為物件的非物件值所代替

物件屬性的特性:(屬性包含1個名字和4個特性)

*資料屬性4個特性:值(value)、可寫性(writable)、可列舉性(enumerable)、可配置性(configurable)

*存取器屬性4個特性:讀取(get)、寫入(set)、可列舉性(enumerable)、可配置性(configurable)