• ES6--》对象扩展方法


    目录

    对象扩展

    name 属性

    属性的遍历

    super关键字

    Object.is()

    Object.assign()

    Object.getOwnPropertyDescriptors()

    Object.setPrototypeOf()

    Object.getPrototypeOf()

    Object.keys()、Object.values、Object.entries()、Object.fromEntries()

    Object.hasOwn()


    对象扩展

    本文简单介绍以下ES6对对象新增的方法:

    name 属性

    函数的name属性,返回函数名。对象方法也是函数也有name属性。

    如果对象方法使用取值函数(getter)和存值函数(setter),需要该方法的属性的描述对象在对象get和set属性上面,返回值是方法名前加上get和set。

    有两种特殊情况:

    属性的遍历

    ES6中一共有 5 种方法可以遍历对象的属性。

    (1) for...in

    循环遍历对象自身属性和继承的可枚举属性

    (2)Object.keys(obj)

    返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)的键名

    (3)Object.getOwnPropertyNames(obj)

    返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)的键名

    (4)Object.getOwnPropertySymbols(obj)

    返回一个数组,包含对象自身的所有Symbol属性的键名

    (5)Reflect.ownKeys(obj)

    返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是Symbol或字符串,也不管是否可枚举。

    super关键字

    this关键字总是指向函数所在的当前对象一样,ES6新增了另一个类似的关键字super,指向当前对象的原型对象。

    下面代码中,super.say() 指向原型对象 obj 的say方法,但是绑定的this却还是当前对象obj,因此输出的结果不是hello而是world。

    Object.is()

    用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。

    Object.assign()

    用于对象的合并,将源对象所有可枚举的属性,复制到目标对象上。

    用到对象合并我们可以就会遇到一些问题了,请看如下例子:

    在使用这个ES6新增的方法时,应该注意以下内容:

    Object.getOwnPropertyDescriptors()

    返回指定对象所有自身属性(非继承属性)的描述对象。

    Object.setPrototypeOf()

    方法作用与__proto__相同,用来设置应该对象的原型对象(prototype),返回参数对象本身。

    Object.getPrototypeOf()

    方法用于读取一个对象的原型对象,与Object.setPrototypeOf()方法配套。

    Object.keys()、Object.values、Object.entries()、Object.fromEntries()

    三种方法都是返回一个数组,之间的区别请看如下:

    Object.hasOwn()

    方法可以判断某个属性是否为原生属性,接受两个参数,第一个是参数是要判断的对象,第二个是属性名。

  • 相关阅读:
    Debezium系列之:Mysql数据库开启Binlog
    理解MySQL的会话变量、局部变量和全局变量
    数组详解(java)
    jvm06
    一个案例熟悉使用pytorch
    golang gorm 模型定义与tag字段详解
    LLM:huggingface-datasets库
    windows安装ElasticSearch
    汇率之谜:揭秘黄金折算与真实人民币汇率的神秘差距
    Django日志集成 & MySQL/Redis 异常捕获
  • 原文地址:https://blog.csdn.net/qq_53123067/article/details/126924391