JavaScript对象扩展方法的用法详解

JavaScript对象中的可扩展性指的是:是否可以给对象添加新属性。所有的内置对象和自定义对象显示的都是可扩展的,对于宿主对象,则由JavaScript引擎决定

本文简单介绍以下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()

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

到此这篇关于JavaScript对象扩展方法的用法详解的文章就介绍到这了,更多相关JS对象扩展内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是JavaScript对象扩展方法的用法详解的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程