4 回答

夢里花落0921
TA貢獻1772條經(jīng)驗 獲得超6個贊
因為瀏覽器優(yōu)化
像java這種靜態(tài)語言 a.x 只要 記住 x 前面的 屬性 需要多少 位,x 自己是什么,需要占多少位就可以,這樣的話 匯編代碼很短,運行就很快
js a.x 在x 內部需要保存 自己 是 字符串還是數(shù)組,對象還是 數(shù)字,以及 自己在內存中位置,這樣就很慢
所以 v8那些大佬,就想辦法啊,為了保持速度,ES6提倡保持對象的靜態(tài)性,他們生成 隱藏類,但是如果你改變了 某個 類屬性的 類型,字符串變數(shù)組,瀏覽器又要從新生成另一個隱藏類,這更慢
所以 推薦 typescript 這類語言

森欄
TA貢獻1810條經(jīng)驗 獲得超5個贊
一些 JS 引擎比如 v8 會對同個 shape 的對象進行優(yōu)化,增刪屬性會改變 shape 從而取消優(yōu)化。(v8 優(yōu)化了刪除最后一個(添加的)屬性)
還有看見你 tag 了 React,在 React 中這么做更多是考慮 immutability ,方便 React 判斷對象改變了沒有。Redux 這樣的庫更要求這么做來保持 state 的純凈。
添加回答
舉報
0/150
提交
取消