怎麽判斷對象obj中是否含有某個屬性以及怎麽刪除對象中的某個屬性
阿新 • • 發佈:2019-05-08
屬性 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中是否含有某個屬性以及怎麽刪除對象中的某個屬性