• 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()

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

  • 相关阅读:
    图搜索的经典启发式算法A星(A*、A Star)算法详解
    C语言 do while循环练习 上
    2024年最新版云开发cms开通步骤,开始开发微信小程序前的准备工作,认真看完奥!
    2022年11月2日 matlab 中@函数的用法
    MYSQL高可用架构之MHA实战三 mha+keepalive
    [Vite]import.meta.glob批量引入svg图片
    SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
    AI人工智能(第二天)
    17 wordcloud库的使用
    信息学奥赛一本通:1165:Hermite多项式
  • 原文地址:https://blog.csdn.net/qq_53123067/article/details/126924391