我正在尝试找到学习 Javascript 的方法,并且遇到了一个问题,即我被告知的几段代码是相同的,但结果却不同。我发现有三种定义对象(实例)的方法:
版本 1:
var obj = { //create the instance
variable: value
};
obj.fun = function() {
obj.variable += 1;
console.log('obj.fun is called');
};
版本 2:
var obj = { //create the instance
variable: value,
fun: function() {
this.variable += 1;
console.log('obj.fun is called');
}
};
第 3 版:
function Obj() { //create the class
this.variable = value;
this.fun = function() {
this.variable += 1;
console.log('obj.fun is called');
}
};
obj = new Obj(); //create the instance
事实上,我正在尝试使用以下方法在 HTML5 画布中创建鼠标事件处理程序:
canvas_id.addEventListener("mousedown", obj.fun, false);
目前,如果我尝试obj.fun
使用此事件侦听器调用函数,则只有版本 1 有效,但我更喜欢使用版本 2,因为我认为它更干净。在版本 2 和 3 中,函数在调用时执行obj.fun(newvalue)
(创建控制台消息),但变量没有更改为新值;如果我尝试检索obj.variable
原始值,则返回。
我想知道这三个版本的写作之间的确切区别是什么,所以我可以理解何时使用什么。提前致谢。