(Javascript)关于“this”的说明在数组字面量内
(Javascript) Clarification on "this" within an array literal
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);
所以,如果我运行rpgConfig.test(),警告会弹出"js"。太棒了!但是,我的rpgConfig。Include显示为"undefined",其中this。Dir应该输出"js"(就像在test()中那样)…
那么,我如何将"this"作用域添加到数组文字中呢?
谢谢
不能,因为prototype是用来在类的每个实例之间"共享"成员的(以及它的后代,如果从未被重写的话)。这意味着你必须把它包装在一个函数中,以便它提供你需要的东西。
Constructor.prototype = {
include: function () {
return [
this.dir + "/Common.js",
this.dir + "/Common/Class.js"
];
},
test: function() {
alert(this.dir);
}
};
首先计算对Constructor.prototype
的赋值,然后再计算构造函数。在计算它的时候,构造函数已经被声明了,但是还没有运行,所以this.dir
的值在那个时候是未定义的。
test()
函数工作的原因是因为每次调用它时它都会根据需要获取this.dir
的值,所以在调用它时,this.dir
已经被分配了。
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 在Javascript中转换对象数组
- (Javascript)关于“this”的说明在数组字面量内