我一直在尋找通過拉斐爾源 - sourceRaphael爲什麼使用object [apply]?
他們似乎使用
object[apply](obj, args)
這我假設相當於
object.apply(obj, args)
我是假設是否正確?如果是的話,他們爲什麼要這樣做?
感謝
編輯
由於@deceze說應用是一個變量,因此它是不等價的。但是,在第38行,他們將字符串"apply"
分配給變量apply
,所以這使得它等價。你爲什麼要這樣做?
我一直在尋找通過拉斐爾源 - sourceRaphael爲什麼使用object [apply]?
他們似乎使用
object[apply](obj, args)
這我假設相當於
object.apply(obj, args)
我是假設是否正確?如果是的話,他們爲什麼要這樣做?
感謝
編輯
由於@deceze說應用是一個變量,因此它是不等價的。但是,在第38行,他們將字符串"apply"
分配給變量apply
,所以這使得它等價。你爲什麼要這樣做?
使用點符號是真的爲object[propertyname]
只是語法糖,但它有一個缺點,屬性名稱不能被精縮。
這樣做
var apply = "apply";
foobar[apply](.....
foobar[apply](.....
foobar[apply](.....
foobar[apply](.....
這實際上可以被精縮到
var a = "apply";
b[a](.....
b[a](.....
b[a](.....
b[a](.....
而且有你的理由,拉斐爾使用[]符號,以提供更好的縮小。
在這種情況下,apply
應該是一個保存方法名稱的變量,所以這是一種用變量名稱調用對象方法的方法。因此它不等同於object.apply()
,因爲它總是調用apply()
方法。
var apply = 'foo';
object[apply](); // calls object.foo()