我在寫一些的CoffeeScript剛纔和得到一個奇怪的錯誤:new thing(param)和new(thing(param))有什麼區別?
TypeError: Thing(param) is not a constructor
但它是!當我嘗試在控制檯:
var that = new Thing(param);
that.doesSomething();
有點混亂後,我通過編譯源看去,發現了coffee
編譯that = new Thing param
到that = new(Thing(param));
。奇怪的;我以前從來沒有見過。所以我馬上嘗試一下:和田!現在,我可以複製:
var that = new(Thing(param));
that.previousLineErrorsOut();
(順便說一句,the CoffeeScript generator on its home page產生new Thing()
形式的情節變得...。)
我也嘗試一下用默認構造函數(new Worker("somefile")
和new(Worker("somefile"))
),它們的行爲與「正確「,就是說,這兩種形式沒有區別。
所以我徹底困惑:什麼是new()
?爲什麼在某些情況下失敗? 爲什麼CoffeeScript將我的完美精緻new
轉換爲new()
?
的CoffeeScript.org上的CoffeeScript控制檯目前使用最新版本的CoffeeScript 1.1.2。如果您的本地CoffeeScript安裝行爲不同,它必須是不同的版本。 –
沒有。它是1.1.2,直接npm。 –
你能給我舉一個例子,說明你的系統上編譯的JS與Try CoffeeScript控制檯中編譯的JS有什麼不同嗎? –