为了账号安全,请及时绑定邮箱和手机立即绑定

使用‘新’关键字作为‘静态’的Javascript函数表达式是正确的吗?

使用‘新’关键字作为‘静态’的Javascript函数表达式是正确的吗?

交互式爱情 2019-06-06 16:03:50
使用‘新’关键字作为‘静态’的Javascript函数表达式是正确的吗?我只是想更深入地理解Javascript。我创建了一个“类”gameData我只想要其中之一,不需要构造函数,也不需要实例化。所以我就这样创造了它.。var gameData = new function () {     //May need this later      this.init = function () {      };     this.storageAvailable = function () {         if (typeof (Storage) !== "undefined") {             return true;         }         else {             return false;         }     };}意识到‘new’关键字不允许实例化它,并使它像静态类一样可用,这将在C#中。我想对了吗?是静态的?
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

没有班级,等级在ECMAScript中,只有对象.

什么时候new用于调用函数,我们称之为构造函数..这个函数完成后会自动返回一个新的对象。存储在该对象中的任何数据this(引用新创建的对象)作为该对象的属性返回。除此之外,new设置一个名为构造器就是这个功能。

在您的例子中,您甚至不需要使用new,您可以轻松地重写代码如下:

var gameData = (function () {
    var public = { },
        private = { }; // any private data can get stored here

    //May need this later 
    public.init = function () { 
    };

    public.storageAvailable = function () {
        if (typeof (Storage) !== "undefined") {
            return true;
        }
        else {
            return false;
        }
    };

    return public;}());

这叫做工厂模式单例模式模块模式可能还有别的名字。


查看完整回答
反对 回复 2019-06-06
?
largeQ

TA贡献2039条经验 获得超7个赞

我认为您要寻找的只是一个简单的JavaScript对象:

var gameData = {
    //May need this later 
    init : function () { 
    },

    storageAvailable : function () {
        if (typeof (Storage) !== "undefined") {
            return true;
        }
        else {
            return false;
        }
    }}

如果要使用私有变量,请创建一个显示模块模式样式的包装器。这基本上就是Jandy的建议:

var gameData = (function() {
    var private = 'private variable';

    return {
        //May need this later 
        init : function () { 
        },

        storageAvailable : function () {
            if (typeof (Storage) !== "undefined") {
                return true;
            } else {
                return false;
            }
        }
    }})();


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 474 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信