3

我记得遇到过这个问题的解决方案。如果我没记错的话,这种类型的论点有一个特殊的术语。但我只是不记得它到底是什么。我尝试在网上搜索它但无济于事..所以它来了:

我想传递一个由函数组成的参数。我应该怎么办?

function meow(cat){
    var z = $("#nyan").position().cat;
    alert(z);
}

meow(left);

或者

function meow(cat){
    var z = $("#nyan").cat();
    alert(z);
}

meow(height);
4

3 回答 3

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.xif widthistrue a.yif widthis false,例如:

var result = a[width ? "x" : "y"];
于 2012-05-06T10:13:47.703 回答
0

您可以call用来调用作为参数传递的函数:

function meow(cat) {
    var z = cat.call($("#nyan"));
    alert(z);
}

meow($.fn.height);
于 2012-05-06T10:15:43.150 回答
0

给定的解决方案将起作用,但如果您希望函数同时接受属性/属性和函数,它们将不起作用。

尝试这个:

function meow(cat){
  var z = typeof cat == 'function' ? $("#nyan").[z]() : $("#nyan")[z];
  alert(z);
}

meow(left);

修改它以满足您的需求。

于 2012-05-06T10:23:04.343 回答