我想制作一个递归函数。考虑我有一个名为setoptions的函数,我需要设置2个选项,所以我要做的就是这样调用我的函数两次。
setoptions ("ajax",true);
setoptions ("lamda",false);
所以为了避免它,我应该能够以一种我可以定义多个选项的方式编写函数,比如
setoptions({
"lamda": false,
"ajax": true
});
这与jquery的attr函数相同。 喜欢
$("#ff").attr("href","#");
$("#ff").attr("data-type","blue");
// can be used as
$("#ff").attr({
"data-type": "blue",
"href": "#"
});
请不要提供解决方法,因为我需要了解这种学习递归。
基本setOption函数:
var setOption = function (val1, val2) {
$.someplugin(val1, val);
};
答案 0 :(得分:1)
试试这个:
function setOption(){
if(arguments.length==2)
window.arguments[0] = arguments[1];
else {
for(var key in arguments[0]){
setOption(key,arguments[0][key];
}
}
}
编辑:我使用了window对象,因为我不知道你的值必须设置在哪里。因此,您可能需要修改代码中的if body语句。
Edit2:因为只有这个可以被称为递归,这将是我的方法。如果你想调用一个插件,那么我会设计该插件以递归方式执行。
* 编辑3 * 是的,我觉得这样的事情。 请注意,它仍然不是recursive.console.log()行不应重复。
var setOption = function () {
if (arguments.length == 2) {
console.log(arguments[0], arguments[1]);
} else if (jQuery.isPlainObject(arguments[0])) {
for (var key in arguments[0]) {
console.log(key, arguments[0][key]);
}
}
}
//USAGE:
setOption({
"href": "#",
"data": "123",
});
setOption("cell", true);
}
答案 1 :(得分:0)
尝试:
var setOption = function (data) {
for (var key in data) {
$.someplugin(key, data[key]);
}
};
答案 2 :(得分:0)
这是我想出来的。如果有更好的方法,请告诉我。 现在这是真正的递归。
var setOption = function () {
if (jQuery.isPlainObject(arguments[0])) {
for (var key in arguments[0]) {
setOption(key, arguments[0][key]);
}
} else if (arguments.length == 2) {
console.log(arguments[0], arguments[1]);
}
}
//USAGE:
setOption({
"href": "#",
"data": "123",
});
setOption("cell", true);