gpt4 book ai didi

javascript - Javascript 中的对象说明符

转载 作者:可可西里 更新时间:2023-11-01 01:42:13 25 4
gpt4 key购买 nike

在 Douglas Crockford 的书“Javascript: The Good Parts”中,他在将值传递给新对象时提到了 Object Specifiers。本质上,他建议传递一个包含参数的对象,而不是按特定顺序将参数传递给函数,如下所示:

var myObject = someFunction({a: 1, b: 2, c: 3});

但是,没有解释的是如何在传递这些参数后对其进行处理。而不是执行以下操作来设置默认值:

function someFunction(params){
this.a = params.a || 0;
this.b = params.b || 0;
...
}

还有什么方法可以处理大量参数而不那么冗长?


编辑:看看下面的答案,使用 for-in 循环是一个很好的选择。为每个属性设置不同的默认值时,还有什么方法可以做到这一点?有没有一种方法可以创建具有各种默认值的对象并与之进行比较?

最佳答案

通常它是使用defaults 对象完成的,如果属性不存在于参数中,您可以从该对象复制属性。该对象可能是私有(private)的或可供公众进行配置。

var defaults = { a:null, b:1, ...};
function someFunction(params) {
for (var prop in defaults)
if (prop in params)
this[prop] = params[prop];
else
this[prop] = defaults[prop];
}

function someFunction(custom) {
var params = { a:null, b:1, ...};
for (var prop in custom)
params[prop] = custom[prop];
// now use params
}

有时传递给函数的 custom/params 对象本身也会被扩展,但是在文档中应该明确提到对象可以被修改:

var defaults = { a:null, b:1, ...};
function someFunction(params) {
// modifies params object!
for (var prop in defaults)
if (! (prop in params))
params[prop] = defaults[prop];
// now use params
}

如果您使用的是带有extend 函数的库,您通常可以将此初始化缩短为

    var params = $.extend({}, defaults, custom);
// create an empty object, copy the defaults, and overwrite with custom properties

关于javascript - Javascript 中的对象说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com