使用 '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中文网其他相关文章!