第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript:對象重命名鍵

JavaScript:對象重命名鍵

冉冉說 2019-07-10 14:41:57
JavaScript:對象重命名鍵是否有一種聰明(即優(yōu)化)的方法來重命名javascript對象中的鍵?一種非優(yōu)化的方法是:o[ new_key ] = o[ old_key ]; delete o[ old_key ];
查看完整描述

3 回答

?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個贊

我相信,最完整(也最正確)的做法是:

if (old_key !== new_key) {
    Object.defineProperty(o, new_key,
        Object.getOwnPropertyDescriptor(o, old_key));
    delete o[old_key];}

此方法確保重命名的屬性行為一致原來的那個。

而且,在我看來,將其包裝成函數(shù)/方法并將其放入Object.prototype與你的問題無關(guān)。


查看完整回答
反對 回復(fù) 2019-07-10
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個贊

您可以將工作包裝在一個函數(shù)中,并將其分配給Object原型??赡軙褂肍LUENT接口樣式使多個重命名流。

Object.prototype.renameProperty = function (oldName, newName) {
     // Do nothing if the names are the same
     if (oldName == newName) {
         return this;
     }
    // Check for the old property name to avoid a ReferenceError in strict mode.
    if (this.hasOwnProperty(oldName)) {
        this[newName] = this[oldName];
        delete this[oldName];
    }
    return this;};

ECMAScript 5特異性

我希望語法不是這么復(fù)雜,但是有更多的控制是絕對好的。

Object.defineProperty(
    Object.prototype, 
    'renameProperty',
    {
        writable : false, // Cannot alter this property
        enumerable : false, // Will not show up in a for-in loop.
        configurable : false, // Cannot be deleted via the delete operator
        value : function (oldName, newName) {
            // Do nothing if the names are the same
            if (oldName == newName) {
                return this;
            }
            // Check for the old property name to 
            // avoid a ReferenceError in strict mode.
            if (this.hasOwnProperty(oldName)) {
                this[newName] = this[oldName];
                delete this[oldName];
            }
            return this;
        }
    });


查看完整回答
反對 回復(fù) 2019-07-10
?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個贊

如果要變異源對象,ES6可以在一行中完成。

delete Object.assign(o, {[newKey]: o[oldKey] })[oldKey];

或者兩行,如果您想創(chuàng)建一個新的對象。

const newObject = {};delete Object.assign(newObject, o, {[newKey]: o[oldKey] })[oldKey];


查看完整回答
反對 回復(fù) 2019-07-10
  • 3 回答
  • 0 關(guān)注
  • 978 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號