JavaScript对象内置方法详解

1、Object.assign

将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。

- - - -
- - - 
- - -
- -
- ------ - - -- -- -- - --
- ------ - - -- -- -- - --
- -------------- - ----------- --------
------------ - - - - - - - - -
------------ - - - - - - -
-------------------- - - - - - - - - -

2、Object.create

创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。

- ---- - -
    -- --
    -- ----
        ------
    -
-
- -
- ---- - ----------

3、Object.defineProperties

直接在一个对象上定义新的属性或修改现有属性,并返回该对象。

- --- - -
    -- -
-

------------ -
    -- -
        -- -
    --
    -- -
        -- -
    -
--- - - - - -

4、Object.defineProperty

直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

- --- - -
    -- -
-

------------ -- -
    -- -
--- - - -

------------ -- -
    -- -
--- - - - - -

--------- - - - - - - - - -

5、Object.entries

返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for...in 循环还会枚举原型链中的属性)。

- --- - -
    -- --
    -- -
-

------------- - - - - -

- -- ----- ------ - --------- -
    --------- ------ - - -    - -
-

6、Object.freeze

冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

- --- - -
    -- --
    -- -
-
- -
--------
- -
----- - --
- -
----- - --
- -
- ------

--------- - - - - -

7、Object.fromEntries

把键值对列表转换为一个对象。

- --- - - --- --- --- -- -
------------- - - - - -

- --- - - --- --- --- --- -- ---
-------------- - - - - -

8、Object.getOwnPropertyDescriptor

返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)

- --- - -
    -- -- 
-

- ---- - -------- --
------------ - -
------------ - -

9、Object.getOwnPropertyDescriptors

获取一个对象的所有自身属性的描述符。

- --- - -
    -- -- 
-

- ---- - ----
    ---------
    --------
--
---------- - - -

- - - -
------ - -
---------- - - -
--------- - - -

10、Object.getOwnPropertyNames

返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

- -
- --- - --- -- ---
------------------ - - - - -

- -
- ------- - - -- -- -- -- -- ---
---------------------- - - - -


-
- --- - ------- -
    -- -
        -- --- - - ---- --
        -- -
    -
---
----- - --
------------------ - - -

11、Object.getOwnPropertySymbols

返回一个给定对象自身的所有 Symbol 属性的数组。

- --- - ---
- - - -----
- - - -------

------ - --
------ - --

- ------------- - ---------

--------------------- - -
------------------         - - -
---------------------      - -

12、Object.getPrototypeOf

返回指定对象的原型(内部 Prototype 属性的值)。

- --- - --- ---
- ---- - ---------

--------------- - - -
------------- - ----- - -

13、Object.hasOwn

判断是否为自身属性

- - - - - - - - -

- --- - --- ---

------------ ---- - -
------------ ---- - -

14、Object.is

判断两个值是否相等

---------- ---- - -
---------- ---- - -

---------- ---- - -
---------- ---- - -
---------- ---- - -

15、Object.isExtensible

确定对象是否可扩展(是否可以向其添加新属性)。

- --- - ---
- - -
-------------- - -
- - - - - -
---------
- - -
-------------- - -

16、Object.isFrozen

确定对象是否已冻结。

- --- - ---
- -
-------------- - -
- - -
---------
- -
-------------- - -

17、Object.isSealed

判断一个对象是否被密封。

- -
- --- - ---
-------------- - -
- - - - - -
---------
-------------- - -

- -
- ------- - - -- - - - --
-------------
------------------ - -
- -
------------ -- -
    -- -
---
------------------ - -

- - -
- ------ - ---
------------
----------------- - -

- -
----------------- - -

- -
----------------- - - -
- -- - ----- -- - ---
------------- - - -

- -- - ----- - --- - - -- - ---
------------- - - -

18、Object.keys

返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。

- -
- --- - --- -- ---
-------------- - - - -

- -
- ------- - - -- -- -- -- -- - --
------------------ - - - -

- -
- --- - - -- -- -- ---
-------------- - - -

19、Object.preventExtensions

方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。

- --- - ---
- -
---------
- -
    -------- -- -
        -- -
    ---
- - --- -
    ------- - - - - - - - - - -
-

20、Object.seal

封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要原来是可写的就可以改变。

- --- - -
    -- -
--
- -
---------
- -
----- - --
----------- - -
- -
- ------
----------- - -

21、Object.setPrototypeOf

方法设置一个指定的对象的原型 ( 即内部 Prototype 属性)到另一个对象或null。

22、Object.values

方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

// 数组
var --- = ['a', 'b', 'c'];
console.log(Object.values(---)); // ['a', 'b', 'c']

// 类数组对象
var ------- = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(-------)); // ['a', 'b', 'c']

// 对象
var --- = { a: 2, b: 3};
console.log(Object.values(---)); // [2, 3]