21前端成长日记 - Object 对象

228 阅读2分钟

Object[itme]||Object.itme

let obj = {}
obj['name'] = '张三'
obj.age = 18 
console.log(obj) //{name:'张三',age:18}

delete obj.key

delete obj.key 删除对象中的一个属性

let obj = {name:'张三',age:'18',city:'Bj'}
delete obj.city //{name:'张三',age:'18'}

let obj = {name:'张三',age:'18',city:'Bj'}
obj.name = '李四'
console.log(obj) //{name:'李四',age:'18',city:'Bj'}

Object.assign()

将一个或多个对象可枚举的属性的值复制到目标对象

语法:Object.assign(target, ...sources)

let obj = {
    name: '张三',
    age: 18
}
Object.assign(obj,{name:'李四', city:'北京'})
obj //{name: "李四", age: 18, city: "北京"}

for in 可以遍历对象

let obj = {
    name: '张三',
    age: '18',
    city: 'BJ',
}
for(let key in obj){
    console.log(key) // name,age,city
    console.log(obj.key) // 张三,18,BJ
}

in 判断对象属性是否在对象中

let obj = {
    name: '张三',
    age: '18',
    city: 'BJ',
}
'name' in obj //true

Object.hasOwnProperty()

for in 和 in 有个问题,它不仅能获取到对象中的属性,还能获取到原型中的属性。如果我们只想获取到对象中属性就可以用hasOwnProperty()

function Obj(name,age) {
    this.name = name
    this.age = age
}
Obj.prototype.city = '北京'
let obj = new Obj('张三',18)

for(let key in obj){
    console.log(key) // name age city
}
'city' in obj //true
obj.hasOwnProperty('city') //false

Object.keys() 获取所有的 key

Object.keys 遍历对象,将对象中所有的 key 放到一个数组中返回

let obj = {
    name: '张三',
    age: 18,
    city: '北京'
}
Object.keys(obj) // ["name", "age", "city"]

Object.getOwnPropertyName() 获取所有的 key

Object.getOwnPropertyName 方法与 Object.keys 类似

Object.toStirng()

Object.toStirng 方法会返回对象的字符串形式

let obj = {
    name: '张三',
    age: 18,
    city: '北京'
}
obj.toString() //"[object Object]"

Object.create()

Object.create 方法可以将一个实例对象作为原型去生成实例

let obj = {
    name: '张三',
    age: 18,
    city: '北京'
}

let obj2 = Object.create(obj)
obj2.keys // '张三'

Object.create 方法还可以接收第二参数,作为创建实例对象的属性

let obj = {
    name: '张三',
    age: 18,
    city: '北京'
}

let obj2 = Object.create(obj,{
    sex: {
        value: '男'
    },
    phone: {
        value: '138*******88'
    }
})
obj2.sex // '男'
obj2.phone // '138*******88'