使用 'new' 關鍵字的 Javascript 函數表達式是否真正靜態?
嘗試在Javascript 中建立一個類似靜態的類,而無需使用建構子或實例化,程式碼編寫如下:
var gameData = new function () { //May need this later this.init = function () { }; this.storageAvailable = function () { if (typeof (Storage) !== "undefined") { return true; } else { return false; } }; }
假設是「new」關鍵字阻止實例化並使函數表達式的行為類似於靜態類別。然而,這並不完全準確。
理解 Javascript 中的「靜態」概念
在 Javascript 中,靜態屬性或方法不會綁定到 a 的實例班級。它屬於類別本身,無論是否存在任何實例。靜態成員通常由類別的所有實例共用。
函數表達式方法的限制
儘管有 'new' 關鍵字,函數表達式仍有一個建構函式財產。這意味著可以使用以下程式碼還原它:
var gameData2 = new (gameData.constructor)();
這將建立函數表達式的單獨實例,從而否定預期的靜態行為。此外,原型鏈包含函數表達式的無用原型物件。
Javascript 中「靜態」實作的替代方案
要實現真正的靜態行為,請考慮這些替代方案:
以上是有「new」的 JavaScript 函數表達式真的是靜態的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!