我有几个要处理onclick的HTML元素。在javascript代码中,我定义了具有属性name和函数whoAreYou()且必须为onclick处理程序的原型。看起来像:

var Somebody = function(name) {
    this.name = name;
}
Somebody.prototype.whoAreYou = function() {
    console.log("I am " + this.name)
};

var somebody = new Somebody("Gary");
document.getElementById("somebody1").onclick = somebody.whoAreYou;


但是this是指HTML元素,而不是somebody,它不是“我是加里”,而是“我未定义”。

在构造函数内部定义whoAreYou时,它正在工作,但我需要继承性。考虑到name已移至whoAreYou,我如何访问他的Somebody.prototype

最佳答案

您可以绑定上下文:

document.getElementById("somebody1").onclick = somebody.whoAreYou.bind(somebody);


要么

document.getElementById("somebody1").onclick = function() {
  somebody.whoAreYou()
};

07-26 09:35