Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中options对象的默认值_Javascript_Dojo - Fatal编程技术网

javascript中options对象的默认值

javascript中options对象的默认值,javascript,dojo,Javascript,Dojo,有没有更好的方法写这个?我正在使用Dojo。也许加入会有用吗 ajaxValidate: function(value, options){ // Set some defaults options.ajaxInvalidMessage = options.ajaxInvalidMessage || "Value not allowed"; options.ajaxStore = options.ajaxStore || null; options.ajax

有没有更好的方法写这个?我正在使用Dojo。也许加入会有用吗

  ajaxValidate: function(value, options){

    // Set some defaults
    options.ajaxInvalidMessage = options.ajaxInvalidMessage || "Value not allowed";
    options.ajaxStore = options.ajaxStore || null;
    options.ajaxFilterField = options.ajaxFilterField  || 'name';
似乎没有
| |=
运算符,我觉得它非常冗长…

您显示的方法:

obj.prop = obj.prop || "default";
…是一个非常常见的习语,但我个人认为if语句更具描述性,尽管它实际上添加了几个字符:

if (!obj.prop) obj.prop = "default";
如果您想要一种更通用的方法,您可以编写如下函数(我不熟悉Dojo,也许它已经有了这样的函数):

然后在代码段中使用它作为:

ajaxValidate: function(value, options){

    addDefaults(options, {
       ajaxInvalidMessage : "Value not allowed",
       ajaxStore : null,
       ajaxFilterField  : 'name'
    });

请注意,在我的
addDefaults()
中,我使用了测试对象中是否存在该属性的。这与您开始使用的测试属性是否为“truthy”的
|
语法略有不同。使用mixin是一种更干净的方法。这样,您还可以显式地将默认值分组到单个对象中

ajaxValidate: function(value, options){

    addDefaults(options, {
       ajaxInvalidMessage : "Value not allowed",
       ajaxStore : null,
       ajaxFilterField  : 'name'
    });
ajaxValidate: function (value, options) {
    options = dojo.mixin({
        ajaxInvalidMessage: "Value not allowed",
        ajaxStore: null,
        ajaxFilterField: "name"
    }, options);

    //...
}