我是JS开发的新手,我尝试使用OO Javascript使用"类",我有一个名为" Timeblock"的类,带有它的构造函数:
var Timeblock = function(occupied, on, element) {
this.occupied = occupied;
this.on = on;
this.room_id = 0;
this.element= element;
}
我用这种方式创建了一个对象:
timeblock = new Timeblock(false, false, $('#element'));
此时一切正常,现在我尝试将click事件监听器添加到其元素var上的类构造函数中,我试过了:
var Timeblock = function(occupied, on, element) {
this.occupied = occupied;
this.on = on;
this.room_id = 0;
this.element = element;
timeblock = this;
this.element.click(function() {
timeblock.update();
});
}
Timeblock.prototype.update = function() {
if (!occupied) {
this.element.addClass('on');
}
}
在Chrome中进行调试时,我在this.element.addClass('on');
上设置了一个断点,检查我可以阅读的对象this.element: jQuery.fn.init[0]
,我无法让它工作。
即使在我输入this.element
的控制台中,我也会undefined
,但如果我输入this.occupied
,我会false
我的问题是,为什么我未定义?我怎样才能让它发挥作用?我已经搜索过并搜索过但无法找到任何好的材料来研究OO Javascript。
答案 0 :(得分:4)
var Timeblock = function(occupied, on, element) {
this.occupied = occupied;
this.on = on;
this.room_id = 0;
this.element = element;
var timeblock = this; // need var statement
this.element.click(function() {
timeblock.update();
});
}
Timeblock.prototype.update = function() {
if (!this.occupied) { // forgot this
this.element.addClass('on');
}
}
两个错误。我修复了它们,并留下了评论解释。