我只是發現在淘汰賽的源代碼的行:爲什麼使用點*和*括號訪問來分配屬性?
target.subscribe = target['subscribe'] = function …
爲什麼他們分配的功能相同的屬性兩次?唯一的區別是他們訪問它的方式。據我所知,這不應該與給定的屬性名稱(JavaScript property access: dot notation vs. brackets?)有所不同。
我只是發現在淘汰賽的源代碼的行:爲什麼使用點*和*括號訪問來分配屬性?
target.subscribe = target['subscribe'] = function …
爲什麼他們分配的功能相同的屬性兩次?唯一的區別是他們訪問它的方式。據我所知,這不應該與給定的屬性名稱(JavaScript property access: dot notation vs. brackets?)有所不同。
這可能是爲了防止代碼縮小時的事情中斷。
target.subscribe
可以縮小到像target.a
之類的東西,但是可能存在依賴於target.subscribe
的代碼仍在那裏。例如,你可能有:
var x = 'subscribe';
target[x](something);
分配到兩個將允許minifier做其工作,而不會破壞表達訪問的支持。
@Bergi我重新打開這個,因爲它不是應該使用的一般問題的重複。這個問題是關於爲什麼一些代碼使用兩個,似乎冗餘。 – Barmar 2014-08-27 16:35:01
@Barmar:是的,我看到了。我想編輯標題,然後自己重新打開它:-) – Bergi 2014-08-28 08:05:50