javascript - 使用 'this' 的 Object.prototype

标签 javascript object methods prototype

这可能是基本的,可能不可能,我可能完全误解了,但我是一个初学者,试图理解如何使用 Object.prototype 向对象添加方法的工作原理。

解释我的问题的最好方法是首先显示以下内容:

Object.prototype.printHTML = function() {
    alert(this.innerHTML);
};

this 似乎只是引用了 Object.prototype.printHTML(提醒 HTML 上面 = 符号后面的内容。

我的问题是,你可以直接引用所使用的对象吗?

因此,下面将提醒“测试段落”:

<body>
<p id='test'>Test Paragraph</p>

<script>
Object.prototype.printHTML = function() {
    alert(this.innerHTML);
};

document.getElementById("test").printHTML; //this would alert "Test Paragraph"
//currently alerts "function() {alert(this.innerHTML);}
</script>
</body>

我知道这个例子是毫无意义的(因为 document.getElementById("test").innerHTML; 正好给了我我所需要的),但我只是想理解使用 Object 创建方法.prototype 和我无法弄清楚如何访问正在运行该方法的对象。

谢谢

最佳答案

你真的很接近,而是这样做

<body>
<p id='test'>Test Paragraph</p>

<script>
Object.prototype.printHTML = function() {
    alert(this.innerHTML);
};

document.getElementById("test").printHTML(); //<--- HERE WE ADD THE PARENTHESIS
//currently alerts "function() {alert(this.innerHTML);}
</script>
</body>

您将 printHTML 作为属性而不是函数来访问并执行它。这就是为什么你得到了文本形式的函数。

关于javascript - 使用 'this' 的 Object.prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237067/

相关文章:

javascript - 向 JavaScript 对象添加方法

C# 大对象和堆

静态修改器方法的 Java 命名约定

java - 当方法具有相同的名称但不同的签名时,方法是否被覆盖?

javascript - 访问导航方法 React-Big-Calendar 和 Typescript

javascript - 使用 Google Apps 脚本的应用程序无法在 Google Chrome 版本 44 中正常运行

javascript - 如何将文件从 HTML5 拖放到 Rails 3 应用程序和回形针?

object - 如何获取特定 cdi session 范围 bean 的所有实例

java - 调用方法以单行打印数组

javascript - 如何获取JS对象中的值?