2015-10-20 55 views
1

函數接收對象o。該功能要求它有四個鍵,a,b,c, d。對於undefined中的每一個,我們都希望設置一個自定義默認值。一種選擇是:如何設置對象的按鍵的默認值?

function func(o) { 
    o.a = o.a || 12; 
    o.b = o.b || function() {} 
    // and so on 
} 

但是,有沒有更優雅或慣用的選項?

+1

@RickHitchcock當然你是對的,修正了這個問題。 –

+2

如果'o.a'是'0',那麼你真的認爲這是價值? – Sampson

回答

3

注意你的方法將覆蓋超過undefined不同falsy值,比如0""NaNfalse

假設你只想要o可枚舉自己的屬性,可以使用Object.assign

function func(o) { 
    o = Object.assign({ 
    a: 12, 
    b: function() {} 
    }, o); 
} 

基本上,它將創建一個具有默認值的新對象,並使用從參數數據將其覆蓋。

+1

這真棒,但它已經在瀏覽器中可用? –

+0

@AvivCohn它是ES6的一部分。 Chrome 45,Firefox 34,Edge build 10240,Opera 32,Safari 9支持。[可以填充](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object /分配#填充工具)。 – Oriol