Object.prototype使用' this'

时间:2016-05-15 10:21:29

标签: 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创建方法而我无法弄清楚如何访问Object方法正在运行。

由于

1 个答案:

答案 0 :(得分:2)

你真的很亲密,而不是这样做

<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作为属性而不是函数并执行它。因此,为什么你把这个功能作为文本。