(Javascript)关于“的澄清”;这";在数组文本中

(Javascript)关于“的澄清”;这";在数组文本中,javascript,arrays,literals,Javascript,Arrays,Literals,因此,如果我运行rpgConfig.test(),警报会弹出“js”。伟大的但是,我的rpgConfig.include显示为“undefined”,其中this.dir应该打印“js”(就像在test()中一样) 那么,如何将“this”作用域添加到数组文本中 谢谢你,因为原型是用来在类的每个实例之间“共享”成员的(如果从未被重写,它的后代也会被“共享”)。这意味着你必须把它包装在一个函数中,它才能给你你所需要的 var RPGConfig = (function() { var Co

因此,如果我运行rpgConfig.test(),警报会弹出“js”。伟大的但是,我的rpgConfig.include显示为“undefined”,其中this.dir应该打印“js”(就像在test()中一样)

那么,如何将“this”作用域添加到数组文本中


谢谢你,因为原型是用来在类的每个实例之间“共享”成员的(如果从未被重写,它的后代也会被“共享”)。这意味着你必须把它包装在一个函数中,它才能给你你所需要的

var RPGConfig = (function() {
    var Constructor = function() {
        this.dir = "js";
        this.enginedir = "js/Engine";
    };
    Constructor.prototype = {
        include: [
            this.dir + "/Common.js",
            this.dir + "/Common/Class.js"
        ],
        test: function() {
            alert(this.dir);
        }
    };
    return Constructor;
})();
rpgConfig = new RPGConfig();
rpgConfig.test();
console.log(rpgConfig.include);

在构造函数函数之前,首先对
构造函数.prototype
的赋值进行评估。在对其求值时,构造函数已声明,但未运行,因此此时未定义
this.dir
的值


test()
函数之所以有效,是因为它在每次调用时都会根据需要获取
this.dir
的值,因此在调用它时,
this.dir
已经被赋值

另请参见数组和对象文字没有作用域。它们就在一个函数作用域内,该函数作用域负责
this
值——在本例中,是您的模块IEFE。你必须把它移到你的构造函数里。完美的注释@Bergi。
Constructor.prototype = {
    include: function () {
        return [
            this.dir + "/Common.js",
            this.dir + "/Common/Class.js"
        ];
    },
    test: function() {
        alert(this.dir);
    }
};