js object

Object.create(原型,描述属性)

Object.assign(target,source),只拷贝source内自身可枚举属性,为浅拷贝

for in  获取实例本身及原型链属性名 for in 循环数组,参数为字符串‘0’、‘1’

Object.keys() 获取本身可枚举属性名 不包括原型链,返回属性名构成的数组

Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)

const obj1 = {
    a:1,
    b:2
}

for(let [key,value] of Object.entries(obj1)){
    console.log(`${key}:${value}`)
}
// a:1
// b:2

Object.fromEntries()方法为Object.entries的反转函数,将array、map转换成对象(注:在 ECMAScript 2019 中首次被定义)

const map = new Map([['a',1],['b',2]])
const obj = Object.fromEntries(map)
console.log(obj)
//{a:1,b:2}

const arr = [['a',1],['b',2]]
const obj2 = Object.fromEntries(arr)
console.log(obj2)
//{a:1,b:2}

obj.hasOwnProperty()  判断本身是否包含某属性,不查询原型链

Object.getOwnPropertyNames() 获取对象自身所有属性,包括不可枚举的属性,不包括属性名为symbol的属性,不查询原型链

Object.getOwnPropertySymbols 返回对象自身所有symbol属性

Object.defineProperty() 用于定义对象属性,及属性描述

Object.defineProperties()用于定义对象属性,及属性描述

var obj = {};
Object.defineProperties(obj, {
  'property1': {
    value: true,
    writable: true
  },
  'property2': {
    value: 'Hello',
    writable: false
  }
});

Object.getOwnPropertyDescriptor(obj,prop)返回指定对象某自有属性对应的属性描述符,(对象自身属性,不查找原型)

Object.getOwnPropertyDescriptors(obj) 返回指定对象所有自由属性的属性描述

Object.freeze() 冻结对象,不可修改属性、新增属性、删除属性;对象属性的可描述性、可枚举性、配置性也不可修改;冻结对象的原型也不可修改。注:该方法为浅冻结,若属性值为对象,可修改对象属性

深冻结方法

function deepFreeze(obj){
    let keys = Object.getOwnpropertyNames(obj)
    
    keys.forEach(function(item){
        if(typeof(obj[item])==='Object'&&obj[item]!==null){
            deepFreeze(obj[item])
        }
    })

    return Object.freeze(obj)

}

Object.seal()密封对象属性,可修改属性、不可删除属性、不可新增属性,将所有属性标记为不可配置

Object.getPrototypeOf()返回指定对象的原型

Object.setPrototypeOf()方法设置指定对象的原型

Object.is()判断两个值是否相等

Object.isExtensible()判断指定对象是否是可扩展的

Object.isFrozen()判断对象是否被冻结 ,详见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen

Object.isSeal() 判断对象是否被密封

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值