通過點或者方括號可以獲取物件的屬性值,如果物件上不存在該屬性,則會返回undefined。當然,這裡的「不存在」指的是物件自身和原型鏈上都不存在,如果原型鏈有該屬性,則會返回原型鏈上的屬性值。
// 建立物件
let test =
// 獲取物件的自身的屬性
test.name //"lei"
test["name"] //"lei"
// 獲取不存在的屬性
test.age //undefined
// 獲取原型上的屬性
test["tostring"] //tostring()
// 新增乙個值為undefined的屬性
test.un = undefined
test.un //undefined 不能用在屬性值存在,但可能為 undefined的場景
所以,我們可以根據 obj.x !== undefined 的返回值 來判斷obj是否有x屬性。這種方式很簡單方便,侷限性就是:不能用在x的屬性值存在,但可能為 undefined的場景。 in運算子可以解決這個問題
mdn 上對in運算子的介紹:如果指定的屬性在指定的物件或其原型鏈中,則in
運算子返回true
。
'name' in test //true
'un' in test //true
'tostring' in test //true
'age' in test //false
示例中可以看出,值為undefined的屬性也可正常判斷。
這種方式的侷限性就是無法區分自身和原型鏈上的屬性,在只需要判斷自身屬性是否存在時,這種方式就不適用了。這時需要hasownproperty()
test.hasownproperty('name') //true 自身屬性
test.hasownproperty('age') //false 不存在
test.hasownproperty('tostring') //false 原型鏈上屬性
可以看到,只有自身存在該屬性時,才會返回true。適用於只判斷自身屬性的場景。 判斷javascript的物件型別
形如 typeof undefined undefined typeof qw string typeof 1 number typeof true boolean typeof function function 不區分null 陣列 typeof null object typeof objec...
判斷JavaScript物件為null或者屬性為空
首先說下null與undefined區別 對已宣告但未初始化的和未宣告的變數執行typeof,都返回 undefined null表示乙個空物件指標,typeof操作會返回 object 一般不顯式的把變數的值設定為undefined,但null相反,對於將要儲存物件的變數,應明確的讓該變數儲存nu...
JavaScript中的物件
物件的實質是一組名值對,其中值可以為資料或函式。當值為資料時,對應的名被稱為物件的屬性 當值為函式時,對應的名被稱為物件的方法。通過object 類建立物件let person new object person.name guagua person.age 18 person.say functi...