1

查看 javascript 评论

var SearchResult = {
    googleApiKey: "",
    googleUrl: "https://www.googleapis.com/shopping/search/v1/public/products?key={key}&country={country}&q={query}&alt=atom",
    country: "UK"
    Query: function( args )
    {     
        // Is there a way to do this in a less messy way?
        args.googleApiKey ? : this.googleApiKey = args.googleApiKey : null;
        args.country? : this.country = args.country: null;
    }
}

基本上,如果有人为我的对象属性提供了一个新值,我希望它设置它,否则只需继续使用提供的默认值。

我知道按位运算符有利于选项选择,但我不知道如何将其移植到 javascript 中?

4

2 回答 2

4
args.googleApiKey = args.googleApiKey || this.googleApiKey;
args.country = args.country || this.country;

不确定我是否理解您的问题;

于 2013-02-13T10:49:08.607 回答
3

在 JavaScript 中,您可以使用以下内容:

// thingYouWantToSet = possiblyUndefinedValue || defaultValue;
this.googleApiKey = args.googleApiKey || '';

使用它的警告是,如果第一个值是零或空字符串,您最终将使用默认值,这可能不是您想要的。例如

var example = '';
var result = example || 'default';

尽管设置了示例,但您最终会得到“默认”字符串。如果这给您带来问题,请切换到:

(typeof args.googleApiKey === 'undefined') 
    ? this.googleApiKey = 'default'
    : this.googleApiKey = args.googleApiKey;

如果您经常重复自己,则可以使用辅助函数使这个更清洁。

var mergedSetting = function (setting, default) {
    return (typeof setting === 'undefined') ? default : setting;
}

this.googleApiKey = mergedSetting(args.googleApiKey, 'default value');
于 2013-02-13T10:49:23.410 回答