Javascript 拉斐尔为什么使用object[apply]?

Javascript 拉斐尔为什么使用object[apply]?,javascript,Javascript,我一直在看拉斐尔的资料- 他们似乎使用 object[apply](obj, args) 我假设这相当于 object.apply(obj, args) 我的假设正确吗?如果是这样,他们为什么要这样做 谢谢 编辑 正如@deceze所说,apply是一个变量,因此它不是等价的。但是,在第38行,他们将字符串“apply”分配给变量apply,因此这使其等效。为什么要这样做?在这种情况下,apply应该是一个包含方法名称的变量,因此这是一种使用变量名称调用对象方法的方法。因此,它并不等同于obj

我一直在看拉斐尔的资料-

他们似乎使用
object[apply](obj, args)

我假设这相当于

object.apply(obj, args)
我的假设正确吗?如果是这样,他们为什么要这样做

谢谢

编辑


正如@deceze所说,apply是一个变量,因此它不是等价的。但是,在第38行,他们将字符串
“apply”
分配给变量
apply
,因此这使其等效。为什么要这样做?

在这种情况下,
apply
应该是一个包含方法名称的变量,因此这是一种使用变量名称调用对象方法的方法。因此,它并不等同于
object.apply()
,因为它总是调用
apply()
方法

var apply = 'foo';
object[apply](); // calls object.foo()

在这种情况下,
apply
应该是一个保存方法名称的变量,因此这是一种使用变量名调用对象方法的方法。因此,它并不等同于
object.apply()
,因为它总是调用
apply()
方法

var apply = 'foo';
object[apply](); // calls object.foo()

使用点表示法实际上只是
对象[propertyname]
的语法糖,但它有一个缺点,即属性名称无法缩小

通过做

var apply = "apply";
foobar[apply](.....
foobar[apply](.....
foobar[apply](.....
foobar[apply](.....
这实际上可以缩小到

var a = "apply";
b[a](.....
b[a](.....
b[a](.....
b[a](.....

这就是你的原因,Raphael使用[]符号是为了提供更好的缩小效果。

使用点符号实际上只是
对象[propertyname]
的语法糖,但它有一个缺点,属性名称不能缩小

通过做

var apply = "apply";
foobar[apply](.....
foobar[apply](.....
foobar[apply](.....
foobar[apply](.....
这实际上可以缩小到

var a = "apply";
b[a](.....
b[a](.....
b[a](.....
b[a](.....
这就是你的理由,拉斐尔使用[]符号是为了提供更好的缩小效果