1. 程式人生 > >怎麽判斷對象obj中是否含有某個屬性以及怎麽刪除對象中的某個屬性

怎麽判斷對象obj中是否含有某個屬性以及怎麽刪除對象中的某個屬性

屬性 con efi [ ] var string let bject 判斷

一:判斷對象object中是否含有某個屬性
1:點( . )或者方括號( [ ] )(可以根據 Obj.x !== undefined 的返回值 來判斷Obj是否有x屬性)

// 創建對象
let test = {name : 'dd'}
// 獲取對象的自身的屬性
test.name            //"dd"
test["name"]         //"dd"

// 獲取不存在的屬性
test.age             //undefined

// 獲取原型上的屬性
test["toString"]     // ? toString() { [native code] }

// 新增一個值為undefined的屬性
test.undef = undefined

test.undef              //undefined    不能用在屬性值存在,但可能為 undefined的場景

2: in 運算符

'name' in test        //true
'undef' in test             //true
'toString' in test    //true
'age' in test           //false

註意:這種方式的局限性就是無法區分自身和原型鏈上的屬性,在只需要判斷自身屬性是否存在時,這種方式就不適用了。這時需要hasOwnProperty()

3:hasOwnProperty()

test.hasOwnProperty('name')        //true   自身屬性
test.hasOwnProperty('age')           //false  不存在
test.hasOwnProperty('toString')    //false  原型鏈上屬性

二:刪除對象中的某個屬性(delete不能刪除直接使用var定義的變量)

let a={name:'dd',age: 18, arr:[1,2,3,{grade:'二年級'}]};
delete a.age;// true
console.log(a);//{name: "dd", arr: Array(4)}
delete a.arr;
console.log(a);//{name: "dd"}

怎麽判斷對象obj中是否含有某個屬性以及怎麽刪除對象中的某個屬性