嵌套函数中“this”关键字的范围
Scope for "this" keyword in nested function?
嗨,我的代码看起来像这样:
var myClass = {
globalVar : {
total : 100
},
myFunction : {
getTotal : function() {
return this.globalVar.total;
}
},
};
// Uncaught TypeError: Cannot read property 'total' of undefined
alert(myClass.myFunction.getTotal() );
关键字 this
返回未定义,这是为什么?是因为我用var myClass
而不是function myClass()
吗?
谢谢
[编辑]这是 JSFiddle http://jsfiddle.net/DarcFiddle/cg7Fk/
这是
此时分配给myFunction的对象的范围。
正如Blender在评论中所说,这不是一个类。你想要的可能是这个:
var MyClass = function() {
return {
globalVar : {
total : 100
},
getTotal : function() {
return this.globalVar.total;
}
};
};
alert(new MyClass().getTotal() );
this
结果是myFunction
所以就像你在说myFunction.globalVar.total
不存在。
如果需要,您可以像这样使其可重用。
function Food(cost) {
this.getTotal = function () {
return cost + (cost * 0.05); // add 5%
};
}
var sandwich = new Food(2.50);
alert( sandwich.getTotal() ); // 2.625
http://jsfiddle.net/thetenfold/HvHxR/
有很多方法可以制作"类"(可以这么说)。
这不是唯一的方法,但这是一种体面的方法。
相关文章:
- 正在全局范围中查找JavaScript函数
- 使用“;这个“;JavaScript原型方法中的关键字
- 如何通过数组更新角度子范围
- delete关键字在全局变量上的不同行为
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- HTML范围:动态设置值属性
- "实例范围”;TypeScript类的getter/setter
- JavaScript 中的嵌套函数和 “this” 关键字
- jquery日期选择器年份范围默认值
- Jpgraph:如何手动设置X轴和Y轴的范围
- 在对象数组中查找多个值的d3范围
- 动态加载angularjs并生成控制器和范围
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在Materialize Calendar中设置年份范围
- 在MVVM视图模型中处理应用程序范围的元素
- 使用javascript中的var关键字创建块范围的变量
- Javascript 范围和此关键字的使用
- 嵌套函数中“this”关键字的范围
- 如何检查KeyboardEvent.关键字在Javascript中的特定范围
- 如何保留""范围之外的对象关键字名称;在";?Javascript