成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

死磕JS:Reflect.ownKeys() 和 Object.keys() 怎么選?

開發(fā) 前端
今天在寫一段深拷貝的代碼中,思考一個(gè)問題:如何遍歷 JavaScript 中 Object 的 Keys ,碰到了 Reflect.ownKeys(obj)和 Object.keys(obj) 這兩個(gè)方法,他倆究竟有什么不同?

[[384915]]

本文轉(zhuǎn)載自微信公眾號(hào)「前端思維框架」,作者水墨寒。轉(zhuǎn)載本文請(qǐng)聯(lián)系前端思維框架公眾號(hào)。  

今天在寫一段深拷貝的代碼中,思考一個(gè)問題:如何遍歷 JavaScript 中 Object 的 Keys ,碰到了 Reflect.ownKeys(obj)和 Object.keys(obj) 這兩個(gè)方法,他倆究竟有什么不同?

我們先看一個(gè)例子:

  1. const obj = {a: 5, b: 5}; 
  2. console.log(Reflect.ownKeys(obj)); 
  3. console.log(Object.keys(obj)); 
  4.  
  5. // Result 
  6. // ['a''b'
  7. // ['a''b'

貌似也沒什么不一樣,去翻兩個(gè)方法的文檔得知:

Object.keys(obj) 返回結(jié)果是:一個(gè)由給定對(duì)象的自身可枚舉屬性組成的數(shù)組,數(shù)組中屬性名的排列順序和正常循環(huán)遍歷該對(duì)象時(shí)返回的順序一致 。

而 Reflect.ownKeys(obj)的返回結(jié)果 等價(jià)于:

  1. Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)) 

Object.getOwnPropertyNames() 方法返回一個(gè)由指定對(duì)象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組。

Object.getOwnPropertySymbols() 方法返回一個(gè)給定對(duì)象自身的所有 Symbol 屬性的數(shù)組。

Reflect.ownKeys(obj) 等于把 給定的對(duì)象所有屬性以數(shù)組的方式返回。

我們通過下面代碼來看兩者差別:

  1. var testObject = {[Symbol('1')]: 1, a: 2}; 
  2. Object.defineProperty(testObject, 'myMethod', { 
  3.     value: function () { 
  4.         alert("Non enumerable property"); 
  5.     }, 
  6.     enumerable: false 
  7. }); 
  8. console.log(Object.keys(testObject)); 
  9. // ['a'
  10. console.log(Reflect.ownKeys(testObject)); 
  11. // [ 'a''myMethod', Symbol(1) ] 

總結(jié)

Object.keys(obj) : 結(jié)果是object 上所有可枚舉的key;

Reflect.ownKeys(obj) : 結(jié)果是所有的 key。

 

責(zé)任編輯:武曉燕 來源: 前端思維框架
相關(guān)推薦

2017-02-06 07:34:26

JavaScrip

2021-03-06 09:18:51

JS閉包函數(shù)

2021-03-01 08:02:55

算法排序操作

2021-04-02 07:53:35

js前端手寫題

2022-05-13 09:05:37

JSObject無序

2012-12-27 11:11:54

華為任正非

2021-06-03 08:32:18

JVM調(diào)優(yōu)虛擬機(jī)

2023-12-14 07:36:16

Java并發(fā)原子類

2021-02-25 07:21:00

JVMJavaava虛擬機(jī)

2022-04-19 21:05:03

JavaScript內(nèi)置工具

2022-04-14 09:35:03

Vue.js設(shè)計(jì)Reflect

2013-06-05 09:38:27

Intel功耗酷睿

2021-06-01 09:29:43

ArthasJVM內(nèi)存

2021-11-05 06:57:49

數(shù)組對(duì)象遍歷器

2017-02-27 10:43:07

Javasynchronize

2021-05-25 09:56:42

Jvm類加載機(jī)制Java

2021-02-28 11:58:33

JVM機(jī)制語言

2015-04-03 09:23:00

Google for Office 365云工具

2019-10-10 11:50:38

Java線程開發(fā)

2022-11-07 11:37:27

深拷貝淺拷貝底層
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国外成人在线视频 | 欧美日韩国产精品 | 91精品国产91久久久久久密臀 | 亚洲高清av在线 | 成人在线观 | 欧美一区永久视频免费观看 | 久久一区二区三区四区 | 成人av免费在线观看 | 免费午夜视频在线观看 | 欧美精品久久久久久久久久 | 男女激情网站免费 | 做a网站 | 在线视频第一页 | 9191成人精品久久 | 91九色婷婷 | www.国产精品| 91精品久久久久久久久 | 国产视频线观看永久免费 | 一区在线播放 | 国产精品一区二区在线免费观看 | 国产精品美女一区二区 | 欧美成人猛片aaaaaaa | 日韩a在线 | 日韩 国产 在线 | 国产精品午夜电影 | 精品成人在线 | 综合色播| 免费毛片网站 | 久久久久久久久精 | 激情一区二区三区 | 大陆一级毛片免费视频观看 | 麻豆av网站 | 国产人免费人成免费视频 | 91在线观看免费视频 | 日韩电影免费在线观看中文字幕 | 国产黄色小视频在线观看 | 午夜精品一区二区三区在线观看 | 国产成人99av超碰超爽 | 一二三四av | 欧美日韩黄色一级片 | 欧美精品成人影院 |