在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 為什么es6推薦使用assign而不是通過點(diǎn)號(hào)添加屬性

為什么es6推薦使用assign而不是通過點(diǎn)號(hào)添加屬性

圖片描述

回答
編輯回答
舊言

ES6并沒有推薦寫法這一說,這是該文作者的推薦。

實(shí)際上這跟Immutable有關(guān),即一個(gè)對(duì)象是否是可變的。

性能是間接帶來的好處,更直接的好處是使得變量的變化可以預(yù)測(cè),也更直觀等。

具體可以參考這篇文章Immutable Data Structures and JavaScript

2017年2月3日 04:37
編輯回答
苦妄

一些 JS 引擎比如 v8 會(huì)對(duì)同個(gè) shape 的對(duì)象進(jìn)行優(yōu)化,增刪屬性會(huì)改變 shape 從而取消優(yōu)化。(v8 優(yōu)化了刪除最后一個(gè)(添加的)屬性)

還有看見你 tag 了 React,在 React 中這么做更多是考慮 immutability ,方便 React 判斷對(duì)象改變了沒有。Redux 這樣的庫(kù)更要求這么做來保持 state 的純凈。

2017年11月16日 06:12
編輯回答
瘋浪

因?yàn)闉g覽器優(yōu)化
像java這種靜態(tài)語(yǔ)言 a.x 只要 記住 x 前面的 屬性 需要多少 位,x 自己是什么,需要占多少位就可以,這樣的話 匯編代碼很短,運(yùn)行就很快
js a.x 在x 內(nèi)部需要保存 自己 是 字符串還是數(shù)組,對(duì)象還是 數(shù)字,以及 自己在內(nèi)存中位置,這樣就很慢
所以 v8那些大佬,就想辦法啊,為了保持速度,ES6提倡保持對(duì)象的靜態(tài)性,他們生成 隱藏類,但是如果你改變了 某個(gè) 類屬性的 類型,字符串變數(shù)組,瀏覽器又要從新生成另一個(gè)隱藏類,這更慢
所以 推薦 typescript 這類語(yǔ)言
具體還是要參考 v8為啥那么快

2017年9月15日 00:55
編輯回答
爛人

既然是人家的推薦,就接受嘍,這本質(zhì)上是對(duì)語(yǔ)言的一種優(yōu)化,ES6提倡保持對(duì)象的靜態(tài)性,而Object.assign()可以完成對(duì)象的深度復(fù)制,很好地保證了對(duì)象的靜態(tài)性。

2018年7月2日 05:04