您好我的代码如下:
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/
答案 0 :(得分:2)
这是您此时分配给myFunction的对象的范围。
答案 1 :(得分:1)
正如Blender在评论中所说,这不是一个阶级。你想要的可能就是:
var MyClass = function() {
return {
globalVar : {
total : 100
},
getTotal : function() {
return this.globalVar.total;
}
};
};
alert(new MyClass().getTotal() );
答案 2 :(得分:0)
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/
有很多方法可以制作“课程”(可以这么说) 这不是唯一的方法,但这是一个不错的方式。