2010-12-07 5 views
0

- 彼らは、私が想定していた Raphaelはなぜオブジェクト[適用]を使用しますか?私はラファエルのソースを見てきました

object[apply](obj, args)

を使用するように見えるsource

object.apply(obj, args)

と等価である私は、正しく想定していますか?そしてもしそうなら、なぜ彼らはこれをやっていますか?

おかげ

編集

@decezeが適用されます言うように変数であり、したがって、それは同じではありません。しかし、38行目では、変数applyに文字列"apply"を割り当てているので、これは同等です。なぜあなたはこれをやりますか?

答えて

4

は本当にobject[propertyname]用のためだけ糖衣構文ですが、それは一つの欠点、プロパティ名が縮小されないことができています。これは実際に

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

に縮小さすることができ、あなたの理由があります

var apply = "apply"; 
foobar[apply](..... 
foobar[apply](..... 
foobar[apply](..... 
foobar[apply](..... 

を行うことにより

は、ラファエルは、より良い縮小を提供するために、[]表記を使用しています。

2

この場合、applyはメソッドの名前を保持する変数である必要があります。したがって、これは変数名でオブジェクトメソッドを呼び出す方法です。したがって、これは常にapply()メソッドを呼び出すため、object.apply()と等価ではありません。ドット表記を使用して

var apply = 'foo'; 
object[apply](); // calls object.foo() 
関連する問題