<button onclick="test()">Will it work?</button>
function test() {
this.innerHTML = "It works!";
}
该按钮调用功能测试,因此它应受“this”关键字的影响。
答案 0 :(得分:2)
将其传递给函数
<button onclick="test(this)">
function test(btn) {
console.log(btn);
btn.innerHTML = "it worked";
}
答案 1 :(得分:1)
在函数内部,其值取决于函数的调用方式。
简单的通话
function f1(){ return this; } f1() === window; // global object
在这种情况下,调用不会设置
this
的值。由于代码不是严格模式,this
的值必须始终是一个对象,因此它默认为全局对象。
因此,每当您将函数调用为func()
时,this
都会引用全局对象。而这正是你在这里所做的:
onclick="test()"
你是对的,事件处理程序中的this
引用处理程序绑定的元素,但test
不是事件处理程序,它在正文中一个事件处理程序。从属性值生成的处理程序看起来像
function(event) {
test();
}
所以你看,这是一个简单的电话&#34;,所以毫无疑问this
指的是什么。
如果您想要它,请参阅该按钮,然后您可以使用.call
来呼叫test
并明确将this
设置为传递的值:
onclick="test.call(this)"