对象方法总结(ES6)

一、Object.assign(obj…)

将所有可枚举属性的值(Enumerable:true)从一个或多个对象复制到目标对象,并返回目标对象. (如果遇到相同的可枚举属性,则后方的属性覆盖前方属性)

// Object.assign:
var obj1 = {
    a:5,c:6 };
var obj2 = {
    a:1,d:5 };
var obj3 = object.assign(obj1,obj2);
//  { a:1,c:6,d:5}

二、Object.defineProperty(obj, prop,descriptor)

定义/修改一个对象中的属性

参数:
obj: 对象
prop:定义/修改的属性名称
descriptor:定义/修改的属性描述符

属性描述符: 数据描述符 / 存取描述符

数据描述符:
Configurable:能否delete删除属性(默认值false)
Writable: 能否修改属性的值(默认值false)
Value: 属性的值 (默认值undefined)
Enumerable: 该属性是否为可枚举 (默认值false)

存取描述符:
存取描述符属性 Enumerable 和 Configurable 和数据描述符一致
Get: 提供一个getter方法,访问调用
Set: 提供一个setter方法,修改时调用
// Object.defineProperty
  var  obj = new Object()
  Object.defineProperty(obj, "name",{
   
    Configurable : false ,
    Enumerable: true ,
    Writable: false,
    Value: "无法被修改的值"
})
console.log(obj.name) // 无法被修改的值

三、Object.defineProperties(obj.props)

将所有可枚举属性的值从一个或多个对象复制到目标对象,并返回目标对象

参数:
obj: 定义/修改属性的对象
props: 对象们(数据描述符 or 属性描述符)

//Object.defineProperties
  var obj2 = new Object();
  Object.defineProperties(obj2, {
   
    name: {
   
      Writable: true,
      Value: "张三"
     },
    Name: {
   
      get: function() {
   
        return  `$(this.name)先生`
     },
     set: function(value){
         this.name = value || "未知"}
})
console.log(obj2.name)  // 张三
console.log(obj2.Name) // 张三先生
obj2.Name = "李四"
console.log(obj2.Name) // 未知

四、Object.getOwnPropertyDescriptor(obj,prop)

获取对象中的一个属性描述

参数:
obj:目标对象
prop:目标属性名称

// Object.getOwnPropertyDescriptor:
  var obj = {
    property1:42 };
  var descriptor1 = Object.getOwnPropertyDescriptor(obj,property);
  console.log(descriptor1.Configurable) //true
  console.log(descriptor1.Value) //42 

五、Object.getOwnPropertyDescriptors(obj)

获取目标对象中的所有属性描述,如果没有任何自身属性,则返回空对象

六、Object.entries(obj)

返回自身可枚举属性的键值对,顺序与for in一致,返回一个二维数组 [[key:value]]

var obj1 = {
    a:1,b:2 };
console.log(Object.entries(obj1))
//  [["a": 1],["b":2]]

七、Object.freeze(obj)

冻结:一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性Enumerable、可配置性Configurable、可写性Writable,以及不能修改已有属性的值Value。此外,冻结一个对象后该对象的原型也不能被修改。

返回值:返回的不是对象的副本,而是对象本身

浅冻结
  var o = Object.freeze(obj);
  o === obj; // true
  Object.
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值