函數接收對象o
。該功能要求它有四個鍵,a
,b
,c
, d
。對於undefined
中的每一個,我們都希望設置一個自定義默認值。一種選擇是:如何設置對象的按鍵的默認值?
function func(o) {
o.a = o.a || 12;
o.b = o.b || function() {}
// and so on
}
但是,有沒有更優雅或慣用的選項?
函數接收對象o
。該功能要求它有四個鍵,a
,b
,c
, d
。對於undefined
中的每一個,我們都希望設置一個自定義默認值。一種選擇是:如何設置對象的按鍵的默認值?
function func(o) {
o.a = o.a || 12;
o.b = o.b || function() {}
// and so on
}
但是,有沒有更優雅或慣用的選項?
注意你的方法將覆蓋超過undefined
不同falsy值,比如0
,""
,NaN
,false
。
假設你只想要o
可枚舉自己的屬性,可以使用Object.assign
:
function func(o) {
o = Object.assign({
a: 12,
b: function() {}
}, o);
}
基本上,它將創建一個具有默認值的新對象,並使用從參數數據將其覆蓋。
這真棒,但它已經在瀏覽器中可用? –
@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
@RickHitchcock當然你是對的,修正了這個問題。 –
如果'o.a'是'0',那麼你真的認爲這是價值? – Sampson