对象方法的补充
Object.create()
使用指定的原型对象和属性创建一个新对象。
返回值:一个新对象,带着指定的原型对象和属性。
var obj = {
name: "why",
age: 18
}
// 指定新对象的原型为obj
var info = Object.create(obj, {
address: {
configurable: true,
writable: true,
enumerable: true,
value: "beijing"
}
})
console.log(info)
Object.assign()
通过复制一个或多个对象来创建一个新的对象。
const target = { a: 1, b: 2 };
const source = { c: 4, d: 5 };
// 原对象target也会发生变化
// const res = Object.assign(target, source)
// 解决方案1
const res1 = Object.assign({}, target, source)
// 解决方案2
const res2 = {...target, ...source}
Object.defineProperty()
给对象添加一个属性并指定该属性的配置
const obj = {};
Object.defineProperty(obj, "address", {
value: "深圳",
configurable: true,
enumerable: true,
writable: true
})
Object.defineProperties()
给对象添加多个属性并分别指定它们的配置。
const obj = {};
Object.defineProperties(obj, {
address: {
value: "深圳",
configurable: true,
enumerable: true,
writable: true
},
name: {
value: "malong",
configurable: true,
enumerable: true,
writable: true
}
})
Object.freeze()
冻结对象:其他代码不能删除或更改任何属性。
var obj = {
name: "malong"
};
Object.freeze(obj)
Object.prototype.hasOwnProperty()
返回一个布尔值,用于表示一个对象自身是否包含指定的属性,该方法并不会查找原型链上继承来的属性。
var obj = {
name: "zhangsan"
}
for(var key in obj){
if(obj.hasOwnProperty(key)){
console.log(obj[key])
}
}