我正在編寫一個我打算使用很多的JavaScript庫,並可能最終公開發布。現在,我做了很多的功能,「類的構造函數」的定義是這樣的:我應該嘗試在我的JavaScript類中強制執行強數據類型嗎?
function Point(x, y)
{
this.y = typeof y !== 'undefined' ? y : 0;
this.x = typeof x !== 'undefined' ? x : 0;
if (typeof this.x === "number" && typeof this.y === "number")
{
this.x = x;
this.y = y;
}
else if (this.x instanceof Point && typeof this.y === "undefined")
{
this.x = x.x;
this.y = x.y;
}
else
{
throw ("Point() Constructor: Invalid arguments.");
}
}
這讓我不僅有「兩個不同的構造函數」這個「類」,但它也保證了當對象被實例化時,它具有期望的類型,如果不是,則拋出半有用的錯誤。
這一切似乎都是一個好主意,但現在我已經進入了一種方式,並且我已經看到了其他生產JavaScript源代碼(例如Mozilla的東西),我是開始有第二個想法,因爲人們並沒有真的這樣做。現在我想知道,「爲什麼我要強制鬆散類型的語言符合這些嚴格的打字標準?」
當涉及到錯誤處理和類型檢查時,JavaScript庫的預期標準是什麼?
可能與this question稍有關係,但我正在尋找寫我自己的東西。
我不認爲你正在強制打字,你允許靈活的輸入,就像'Date()'... – dandavis
@dandavis也許這不是最好的例子。我更關心所有的類型檢查。即使在使用ONE參數的簡單函數中,我正在進行類型檢查,然後在發出錯誤類型時拋出錯誤 –