我记得遇到过这个问题的解决方案..如果我没有错,这种类型的论证有一个特殊的术语。但我不能完全记住它是什么。我尝试在网上搜索它但无济于事。所以它来了:
我想传递一个由函数组成的参数。我该怎么办?
function meow(cat){
var z = $("#nyan").position().cat;
alert(z);
}
meow(left);
或
function meow(cat){
var z = $("#nyan").cat();
alert(z);
}
meow(height);
答案 0 :(得分:0)
这不是一个功能;它看起来更像是你想要一个属性的名称。
我只想向你提出一些建议,看看你最喜欢哪一个。
function meow(cat) {
var z = $("#nyan").position()[cat];
alert(z);
}
meow("left");
......或......
function meow(cat) {
var z = $("#nyan")[cat]();
alert(z);
}
meow("height");
......或者,真正使用函数:
function meow(getter) {
var z = getter($("#nyan"));
alert(z);
}
meow(function(nyan) { return nyan.position().left });
meow(function(nyan) { return nyan.position().top });
// etc.
修改:最重要的是a.b
等同于a["b"]
- 请注意后者中的引号。
如果a.x
width
是true
或 a.y
,如果width
是false
,那么,如果您需要var result = a[width ? "x" : "y"];
,例如:
{{1}}
答案 1 :(得分:0)
您可以使用call
来调用作为参数传递的函数:
function meow(cat) {
var z = cat.call($("#nyan"));
alert(z);
}
meow($.fn.height);
答案 2 :(得分:0)
给定的解决方案将起作用,但如果您希望该函数同时接受属性/属性和函数,它们将无法工作。
试试这个:
function meow(cat){
var z = typeof cat == 'function' ? $("#nyan").[z]() : $("#nyan")[z];
alert(z);
}
meow(left);
修改此项以满足您的需求。