首页 > web前端 > js教程 > 带有'new”的 JavaScript 函数表达式真的是静态的吗?

带有'new”的 JavaScript 函数表达式真的是静态的吗?

Susan Sarandon
发布: 2024-12-20 12:55:19
原创
514 人浏览过

Is a JavaScript Function Expression with `new` Truly Static?

使用 '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 中“静态”实现的替代方案

要实现真正的静态行为,请考虑这些替代方案:

  • 对象字面量: 使用简单的对象字面量来定义没有构造函数的属性和方法。
  • 揭示模块模式:将对象文字包含在 IIFE(立即调用函数表达式)中以创建闭包范围的变量。
  • Constructor 'Class': 定义一个构造函数,该函数返回相同的单例对象实例化。

以上是带有'new”的 JavaScript 函数表达式真的是静态的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板