一:判断对象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 运算符

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
'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"}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄