要設定參數預設值,一般來說使用undefined來判定
function foo(a, b)
{
a = typeof(a) != 'undefined' ? a : 42;
b = b || 'default_b';
...
}
作者將function加上一個defaults屬性
Function.prototype.defaults = function()
{
var _f = this;
var _a = Array(_f.length-arguments.length).concat(
Array.prototype.slice.apply(arguments));
return function()
{
return _f.apply(_f, Array.prototype.slice.apply(arguments).concat(
_a.slice(arguments.length, _a.length)));
}
}
之後就可以這樣使用來設定預設值
var foo = function(a, b)
{
...
}.defaults(42, 'default_b');
我覺得這是滿有創意的方法,可以參考用來解其他問題,但是我覺得這樣並沒有增加可讀性,並不推薦
沒有留言:
張貼留言