检测对象中是否存在某个属性
obj.hasOwnProperty('name')
三元运算符
return this.obj.hasOwnProperty('name') ? '存在' : '不存在';
检索对象中的值时,如果key名不是保留字而且标识符合法,优先使用 . (obj.name),可读性更强。
当检索一个未必存在的值时(返回undefined),可以为其设置一个默认值
this.a_value = this.obj['age'] || '默认值';
尝试从一个undefined值中检索key,或抛出一个TypeError.
为对象中一个不存在的key设置value,这个键值对会添加到对象中。
对象通过引用传递,永远不会被复制
let try_to_copy_obj = this.obj; try_to_copy_obj.name = 'modified name'; console.log(this.obj); //name: "modified name"
使用for in遍历对象中所有属性并且过滤可能出现的原型属性
let key_name; for(key_name in this.obj){ let value = this.obj[key_name]; if(typeof value !== 'function'){ console.log(value); } }
注意:for in并非是按照key的排列顺序遍历的,可以创建一个正确顺序的key名数组来遍历对象
for (let i = 0; i < key_name_arr.length; i++) { if (this.obj.hasOwnProperty(key_name_arr[i])) { console.log(this.obj[key_name_arr[i]]); } }
删除对象中的key
delete this.obj.name;