JavaScript 判斷物件中是否有某屬性

2021-09-12 21:41:23 字數 1224 閱讀 3546

通過點或者方括號可以獲取物件的屬性值,如果物件上不存在該屬性,則會返回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...