0

オブジェクトリテラルを次のような関数に渡します。

pre( {model:'MUserTry'} ); 

それからそれを補強したいのですが、結局このように書き留めてしまいます。

    pre : function( o_p ) {
        o_p = {
            result: '0',
            page  : {}
        };

o_pが完全に新しいため、モデルはなくなりました

オブジェクトのプロパティを追加するための最良の方法は何ですか。

今、それらを明示的に定義する必要がありますか?

o_p.result = 0;
o_p.page = {};

または、オブジェクトリテラルを書き出してそれらを組み合わせることができる関数はありますか?

こんな感じ

object1.push (object2 );
4

3 に答える 3

3

新しいオブジェクトのプロパティまたはメソッドを追加するには、ドット演算子を使用します。

obj.dog = "woof";

これも同等です:

obj["dog"] = "woof";
于 2012-07-05T21:28:23.093 に答える
2

コードでは、ローカル変数o_pは、次を割り当てることによって再定義されます。

function( o_p ) {
    // assign a new value to local variable o_p
    // object passed as an argument is untouched
    o_p = {
        result: '0',
        page  : {}
    };
}

次のようにオブジェクトをマージできます:

function( o_p ) {
    var mergee = {
        result: '0',
        page  : {}
    };
    for (var attrname in mergee) { o_p[attrname] = mergee[attrname]; }    
}

または、JQueryを使用できる場合は、extendメソッドを使用できます。

function( o_p ) {
    var mergee = {
        result: '0',
        page  : {}
    };
    $.extend(o_p, mergee);
}
于 2012-07-05T21:39:23.690 に答える
2

プロパティを割り当てるだけで、プロパティを追加できます。

o_p.result = '0';

これにより、新しいオブジェクトが作成されないため、modelプロパティが保持されます。

于 2012-07-05T21:28:08.047 に答える