2016-11-26 58 views
4

我正在努力弄清楚至少enyo的夢幻般的dropzone.js部分。我非常喜歡JavaScript思路和原型範例。第四行有一行代碼,我想知道它在做什麼以及爲什麼會使用這樣的行。該行如下:dropzone.js:__slice = [] .slice

var __slice = [].slice 

有我正確地理解,這需要分片功能從數組原型對象,只是給它一個更容易一點的方式來參考一下吧?這種方法的好處是什麼?爲什麼在開始時雙下劃線?我讀的地方,這是避免在全球範圍內的衝突,但不是這個已經在

(function() { //code here 
}).call(this); 

結構包裹整個代碼避免?

回答

3

我的理解是否正確,這需要數組原型對象中的slice函數,並給它提供了一種更簡單的方法來引用它?

是的。

這種方法的好處是什麼?

__slice短於Array.prototype.slice(這也需要幾個屬性查找的額外層的),並在理論[].slice創建並扔掉的對象。因此,爲其添加標識符只是節省了一些打字和最小,最小,最微小的運行時性能。

爲什麼雙下劃線在開頭?我在某處讀過,這是爲了避免在全球範圍內發生衝突,但這不是已經通過將整個代碼包括在內而避免了這種情況。...

是的,它已經避免了這樣做。在這種情況下,這只是作者想要使用的一種約定,或許表明這是他/她的快捷方式Array.prototype.slice__沒有內在含義。

+0

感謝您的確認和啓發背後的推理。接受答案。看着前面的代碼,我可能會問很多這樣的東西......:D – xtrom0rt