2014-08-27 85 views
0

我只是發現在淘汰賽的源代碼的行:爲什麼使用點*和*括號訪問來分配屬性?

target.subscribe = target['subscribe'] = function … 

爲什麼他們分配的功能相同的屬性兩次?唯一的區別是他們訪問它的方式。據我所知,這不應該與給定的屬性名稱(JavaScript property access: dot notation vs. brackets?)有所不同。

+1

@Bergi我重新打開這個,因爲它不是應該使用的一般問題的重複。這個問題是關於爲什麼一些代碼使用兩個,似乎冗餘。 – Barmar 2014-08-27 16:35:01

+0

@Barmar:是的,我看到了。我想編輯標題,然後自己重​​新打開它:-) – Bergi 2014-08-28 08:05:50

回答

4

這可能是爲了防止代碼縮小時的事情中斷。

target.subscribe可以縮小到像target.a之類的東西,但是可能存在依賴於target.subscribe的代碼仍在那裏。例如,你可能有:

var x = 'subscribe'; 
target[x](something); 

分配到兩個將允許minifier做其工作,而不會破壞表達訪問的支持。

+0

這就解釋了爲什麼他們需要做'target''subscribe'],但他們爲什麼還需要執行'target.subscribe'? – Barmar 2014-08-27 16:31:47

+0

@Barmar這將是一個將被縮小,從而節省空間。 – 2014-08-27 16:32:57

+1

如果沒有第二項任務,它會節省更多空間嗎? – Barmar 2014-08-27 16:33:51

相關問題