首先,我这样调用我的函数:
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]
用 hack 什么的?
首先,我这样调用我的函数:
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]
用 hack 什么的?
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);
...但同样,这对你来说可能太长了;)。
所以总而言之,你所得到的就是尽可能短......恭喜。您已使代码尽可能不可读。