总结一下JS对象API

前言

JS是一门基于对象和原型的语言,所以深入JS的时候接触Object的API是避免不了的。

小工具

Object.create

比new更符合JS编程范式的创建对象方法,使用委托而不是继承

Object.assgin

浅复制,也就是说只能复制所有可枚举的属性的值过来。

Object.is

更加严谨的比较

Object.isExtensible/Object.isSealed/Object.isFreeze

是否可拓展/密封/冻结,三者程度逐渐加深

hawOwnProperty

是否含有自身属性,不会像getOwnPropertyNames会去找继承的属性

操作对象

Object.defineProperty/Object.defineProperties

设置属性描述符(configurable/enumerable/value/writable)

Object.getOwnPropertyDescriptor/Object.getOwnPropertyDescriptors

返回属性描述符(configurable/enumerable/value/writable)

Object.preventExtensions/Object.seal/Object.freeze

把对象变得不可拓展/不可拓展+不可配置/完全禁止修改

原型链相关

prototype/proto/constructor

原型属性:可以查看原型对象
原型访问器:已不推荐使用,但面试经常问到,可以简单理解为指向new的那个函数的原型
构造器:存在于原型链上,可以查看是谁创造出来的,但可以被修改所以不可信

Object.getOwnPropertyNames/Object.getOwnPropertySymbols

返回所有属性/所有symbol属性键

Object.getPrototypeOf/Object.setPrototypeOf

读/写原型

isPrototypeOf

测试一个对象是否存在于另一个对象的原型链上

propertyIsEnumerable

属性名是否可枚举

迭代相关

Object.entries/Object.keys/Object.values

返回一个迭代器对象,通常和let...of一起使用

特殊

toString/toLocalString/valueOf

返回[object xxx]/强制转换类型后的值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 1,474评论 3 12
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 2,633评论 9 22
  • 概述 JavaScript提供了一个内部数据结构,用来描述一个对象的属性的行为,控制它的行为。这被称为“属性描述对...
    zjh111阅读 742评论 0 0
  • 六月是一把无情的火,它燃尽了我生命中的夏花,使梦想之花悄然凋零。中考使我们踏上离别之路。三年的酸甜苦辣,使人终身难...
    姐的霸气无人能比阅读 462评论 6 4
  • 我家有个三斤四(二) “好了,回家了,跨过这‘火盆’,去除恶障,赶走邪气!以后就健健康康、快高长大!”我妈知道我们...
    艾任阅读 391评论 2 4