javascript - 当 HTMLElement.onclick 事件调用时,在其函数中获取对象的属性 - javascript

标签 javascript scope this prototype

我有几个 HTML 元素想要处理 onclick。在 javascript 代码中,我定义了具有属性 name 和函数 whoAreYou() 的原型(prototype),该函数必须是 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,并且不是“我是 Gary”,而是“我未定义”。

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

最佳答案

您可以绑定(bind)上下文:

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

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

关于javascript - 当 HTMLElement.onclick 事件调用时,在其函数中获取对象的属性 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49034921/

相关文章:

javascript - 我需要一种方法来制作多文本输出 onclick 按钮

angular - 通过 Angular2 的所有组件访问变量

javascript - Jquery从 "this"内部的元素创建变量

javascript - onclick 显示元素并隐藏其他元素

Javascript:使用循环变量值作为对象的键

javascript - VueJS - 如何在脚本标签中获取单个文件组件的实例

javascript - 在 Nashorn 中的特定上下文中执行函数

javascript - 在对象中使用 this 时出现 TypeError

javascript - 有没有更好的方法来清理字符串?

JavaScript:MooTools - 使用类获取字符串,使用父函数返回它