JS 对象基本用法

269 阅读2分钟

更新:总结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