总结一下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]/强制转换类型后的值

你可能感兴趣的:(总结一下JS对象API)