2011-07-11 15 views
2

私が探しているのは、オブジェクトに追加できるようにすることですが、それぞれに対してmessageStrings.x = 1のようにすることはできません。行うための最善の方法は何バルクをJavaScriptオブジェクトに追加する

var messageStrings = { 
    Update: "Update", 
    Save: "Save" 
} 

var messageStrings = { 
    Edit: "Edit", 
    Cancel: "Cancel" 
} 

と別のファイル、オブジェクトに多くを追加したい:一つのファイルに私たちのようなものを持っていてもよい。例えば

、既存のオブジェクトに一括追加?

ありがとうございました。

答えて

3

多くの図書館は、あなたがこのような何かを行うことができます「拡張」機能を、提供:「でも」、あなたはプロパティ「デフォルト」を持つオブジェクトを与える「より」、およびしまう

var obj = extend({ "default": "something"}, { "more": "stuff", "even": "more" }); 

function extend() { 
    var args = Array.prototype.slice.call(arguments, 0); 

    var target = args[0]; 
    for (var i = 1; i < args.length; ++i) { 
    for (var k in args[i]) { 
     target[k] = args[i][k]; 
    } 
    } 
    return target; 
} 

一部の実装では、わずかな常に新たに鋳造されたオブジェクトの結果を返す、またはその代わりに、常に最初のパラメータを変更するかどうかなどのセマンティクスを変えるかもしれません:これはあるように関数が見える何

そのようなものです。

も注意しているが完全「深い」コピーを作成するためにシャローコピー —だことを、あなたはより多くのコードが必要と思います。

0

既存のオブジェクトに新しい値をマージできます。 jQueryにはextendメソッドがあります。

jQueryがオプションでない場合、簡単な再帰的な実装を書くことができます(恐らくObject.prototypeのライブラリがある場合にはhasOwnPropertyをチェックしてください)。

0

あなたはjQueryのを使用している場合は、この方法でオブジェクトを拡張することができます。

$ .extend(ObjectAに、ObjectBに);

このようにして、AプロパティとBプロパティの両方を含むオブジェクトを取得します。あなたのようループにするための簡単なを使用することができます

そうでない場合:これは、もちろん単なる一例である

for (var x in obj2) { 
    obj1[x] = obj2[x]; 
} 

、あなたは

を上書きしたデータを避けるために、いくつかのチェックを行う必要があります
関連する問題