0

オブジェクトを渡すことができる関数があります。次に、このオブジェクト内のすべての変数をローカル変数にする必要があります。例えば

function ping(){
    alert(riff); //'raff'
}

ping({
    riff: 'raff'
});

私が考えることができる唯一の方法は、オブジェクトをループして 1 つずつ設定することですが、それは不格好に思えます。代替案はありますか?

編集:戻り値は、その変数がどのようになるかを示すことでした。私が望んでいない主なことは、データに到達するために別のオブジェクトを通過する必要があることです。構造であってほしい

 function.riff = 'raff' 

それよりも

 function.settings.riff = 'raff'
4

3 に答える 3

1

使用$.extendhttp ://api.jquery.com/jQuery.extend/

function ping(options){
    var defaults = { riff : "foo raff" };
    /* merge defaults and options  */
    var settings = $.extend({}, defaults, options);

    console.log(settings.riff); // "raff"
}

ping({
    riff: "raff"
});

JsBinの例:http ://jsbin.com/utinuc/1/edit

于 2013-01-18T11:00:12.443 に答える
1

単に行う

function ping(obj){
    return obj.riff;
}

また

function ping(obj){
    var riff = obj.riff;

    return riff;
}
于 2013-01-18T11:00:16.450 に答える
0
function ping(){
    for(var key in arguments[0]){
        this[key] = arguments[0][key];
    }
}

これは現在、私が思いつくことができる最良の答えです...これに関する進歩はありますか?

関数内のオブジェクトを介してではなく、変数が関数に直接追加されていることに注意してください。

これは、プライベート関数変数を使用する前に、このオブジェクトで上書きできるようにしたいためです。

于 2013-01-18T11:37:32.760 に答える