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](.....
这就是你的理由,拉斐尔使用[]符号是为了提供更好的缩小效果