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"]後者の引用符に注意してください。

したがって、ifが必要な場合、またはa.xifwidthが必要な場合は、たとえば次のようになります。true a.ywidthfalse

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 に答える