まず、次のように関数を呼び出していました。
var a=1;
a=foo(a,2);
prototype
次に、次のように関数を見つけて呼び出しました。
var a=1;
a=a.foo(2);
配列またはオブジェクトの場合は小さくなります。
var a=[1,2,3];
a.foo(2);
このような関数を呼び出す方法はありますか:a(2)
またはa[2]
ハックなどで?
まず、次のように関数を呼び出していました。
var a=1;
a=foo(a,2);
prototype
次に、次のように関数を見つけて呼び出しました。
var a=1;
a=a.foo(2);
配列またはオブジェクトの場合は小さくなります。
var a=[1,2,3];
a.foo(2);
このような関数を呼び出す方法はありますか:a(2)
またはa[2]
ハックなどで?
Array.prototype.foo = function(index) {
return this[index];
};
var a=[1,2,3];
a = a.foo.call.bind(a.foo, a);
a(2); //3;
a(1); //2
a(0); //1
これを行うことができます。
var a=[1,2,3];
var m = "reallyLongMethodName";
a[m](2);
角括弧表記法a.reallyLongMethodName(2)
を使用して呼び出します。
JavaScript では次のようなことが可能です。
var a=[1,2,3];
var c = a.foo;
c(2);
ただしthis
、内部の参照c
が配列ではなくなるため、これはあなたの場合には機能しません。
call()
またはapply()
;を使用してこれを修正できます。
c.call(a, 2);
しかし、それはおそらくあなたの好みには長すぎます。
ラッパー関数を作成することもできます。
function c(ar, val) {
ar.foo(val);
}
c(a, 2);
...しかし、繰り返しますが、それはおそらくあなたの好みには長すぎます;)。
全体として、あなたが手に入れたものはできるだけ短いものです...おめでとうございます。コードを可能な限り判読不能にしました。