调用函数的最小方法

时间:2012-06-19 13:20:08

标签: javascript short

首先,我正在调用我的函数:

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]带有黑客或其他东西?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

你可以这样做;

var a=[1,2,3];
var m = "reallyLongMethodName";
a[m](2);

使用square bracket notation调用a.reallyLongMethodName(2)

这样的中可能是:

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);

......但是,这可能对你的喜好来说太长了;)。

总而言之,你得到的东西就像它一样短...... 祝贺你。您已使代码尽可能不可读。