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