更新:总结JS对象知识点
遍历对象的五种方法
for...in
遍历对象自身的,可枚举的,继承的属性。
let obj={
name:'lucy',
sex:'girl',
age:'23'
}
for(let i in obj){
console.log(i)
}
//name
//sex
//age
Object.keys(obj) 返回属性key
Object.keys() 返回一个数组,自身的,可枚举的,非继承属性。(不含symbol)
let key=Object.keys(obj);
console.log(key);
//["name", "sex", "age"]
Object.getOwnPropertyNames()
返回一个数组,遍历自身的所有属性(可枚举,不可枚举,非继承属性)
let key=Object.getOwnPropertyNames(obj);
console.log(key);
//["name", "sex", "age"]
Object.values(obj) 返回属性值value
let value=Object.values(obj);
console.log(value);
//["lucy", "girl", "23"]
注意: for in 适合遍历对象,for of 用于遍历数组
以下是JS对象基本用法:
1.声明对象的两种语法
let obj = { 'name': 'frank', 'age': 18 }
let obj = new Object({'name': 'frank'})
2.如何删除对象的属性
delete obj.xxx 或者 delete obj['xxx']
删除属性之后的验证:
- 判断obj对象不含属性xxx:
'xxx' in obj ===false - 含有属性名,但是值为undefined:
'xxx'in obj&&obj.xx== undefined - 注意:
obj.xxx=== undefined不能断定'xxx是否为obj的属性
3.如何查看对象的属性
- 查看自身所有属性
Object.keys(obj) - 查看自身+共有属性
console.dir(obj),或者用Object.keys打印出obj.__proto__ - 判断一个属性是自身的还是共有的
obj.hasOwnProperty('toString')
4.如何修改或增加对象的属性
- 直接赋值自身属性
- 通过字符串:
let obj ={name:'frank'}或者obj.name ='frank'或者obj['name']='frank - 通过变量:
let key ='name';或者obj[key]='frank'或者let key ='name';
- 通过字符串:
- 批量赋值自身属性:
Object.assign(obj,{age:18,gender:'man'}) - 共有属性与原型:
- 改共有属性:
obj.__proto__['toString']='xxx'或者Object.prototype['toString']='xxx' - 改原型:
obj.__proto__ =common或者let obj = Object.create(common)注:所有带有__proto__代码都是不推荐写的
- 改共有属性:
5.'name' in obj和obj.hasOwnProperty('name') 的区别
- 判断name属性是否在obj对象中:
'name' in obj ===false - 判断这个属性是否为obj对象隐藏属性:
obj.hasOwnProperty('name')是自身属性值为true,是隐藏属性值为false