0

我有一个可以将对象传递给的函数。然后我需要这个对象中的所有变量成为局部变量。例如

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

ping({
    riff: 'raff'
});

我能想到的唯一方法是循环对象并一一设置它们,但这似乎很笨重。有什么选择吗?

编辑:返回是显示该变量会是什么样子。我不想要的主要事情是必须通过另一个对象来获取数据。我希望结构是

 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 回答