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 に答える