首页 > 解决方案 > 关闭中的 Javascript 类

问题描述

我正在编写一个包含类的 JavaScript 闭包,看起来有点像这样:

// myClosure.js
var myClosure = (function() {

    class myClass {
        constructor(val) {
            this.myValue = val;
        }

        myFunc() {
            console.log("myClass says: " + this.myValue);
        }
    }

    this.myClass = myClass;
});

我想将此闭包“导入”到另一个 JavaScript 文件中并实例化一个myClass. 我试过这个:

// myApp.js
$.getScript('myModule.js', function(myClosure) {
    var myClassInstance = new myClosure.myClass(7);
}

但我收到一个错误,声称它myClosure.myClass不是构造函数。

有人可以指出一个简单的例子,或者一个更好的方法吗?

标签: javascriptclassclosures

解决方案


有几件事,myClosure 什么都不返回,所以你永远无法访问它。在您的示例中,您可以将其返回。

接下来,您还没有执行闭包,您可以通过()在 then end 中将其放入 IFFE..

下面是一个例子。

// myClosure.js
var myClosure = (function() {
    class myClass {
        constructor(val) {
            this.myValue = val;
        }
        myFunc() {
            console.log("myClass says: " + this.myValue);
        }
    }
    this.myClass = myClass;
    return this; //add this
}()); //and <- () that.



var myClassInstance = new myClosure.myClass(7);

myClassInstance.myFunc();


推荐阅读