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

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

  • 相关阅读:
    AIGC生成式人工智能的概念和孵化关键里程碑
    cookie详解
    element -ui table表格内容无限滚动 使用插件vue-seamless-scroll
    ReentrantLock可重入、可打断、Condition原理剖析
    [附源码]Python计算机毕业设计Django海南与东北的美食文化差异及做法的研究展示平台
    台风来袭!建筑工地该如何防范台风!
    FreeRTOS列表和列表项
    java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
    Mybatis学习笔记&注解/xml映射/动态SQL%%%Mybatis教程
    基于数学模型水动力模拟、水质建模、复杂河网构建技术在环境影响评价、排污口论证及防洪评价中的实践技术应用
  • 原文地址:https://blog.csdn.net/qq_53123067/article/details/126924391