2016-03-14 70 views
0

我已經有了的東西的對象是:如何強制對象鍵值對首先坐在對象中?

{ 
    name: 'Smith', 
    age: 24 
} 

我想別的東西添加到它,並強制其先坐下。我怎麼做?

+1

對象沒有順序,其實。 –

+0

我在這裏聞到一個XY問題。你爲什麼關心對象的鍵的順序? –

+0

@MadaraUchiha使用Meteor和MongoDB對字段進行排序,並使用第一個具有更高優先級的鍵值對。它顯然有序,但也許這是因爲Meteor將它變成了場景之後的JSON。 – Yeats

回答

3

在過去的ECMAScript版本中,對象中按鍵的順序是未定義的(意思是,順序無關緊要,您不能指望順序保持不變)。

但是,在ECMAScript 2015中,訂單被明確定義爲它們被插入的順序,意思是說,您只能在對象的末尾插入新的關鍵字。


根據this answer,值得注意的是,雖然爲了在ES2015規定,所有從ES5功能及以下不需要實現它,遺留原因。

但是,從我個人可以記得的所有瀏覽器(從這裏的個人經驗來講,我可能完全錯了),實現了對象順序,就像今天的規格一樣。

+0

不要擔心,我會解決你的downvote。爲什麼他反對投票呢?這個答案是正確的! – XGreen

1

除了@MadaraUchiha的回答,您可以創建Object.assign()新的對象,並指定新的密鑰,然後再休息:

var obj = { 
    name: 'Smith', 
    age: 24 
}; 

var obj = Object.assign({}, {prop: 'something else'}, obj);