<button onclick="test()">Will it work?</button>
function test() {
this.innerHTML = "It works!";
}
該按鈕調用功能測試,所以它應該受到「this」關鍵字的影響。爲什麼不在這裏使用「this」關鍵字?
<button onclick="test()">Will it work?</button>
function test() {
this.innerHTML = "It works!";
}
該按鈕調用功能測試,所以它應該受到「this」關鍵字的影響。爲什麼不在這裏使用「this」關鍵字?
它傳遞給函數
<button onclick="test(this)">
function test(btn) {
console.log(btn);
btn.innerHTML = "it worked";
}
試過了,不起作用。 – 123321123321
@ user3289319檢查小提琴 – Johan
裏面的函數,這個值取決於函數是如何被調用。
簡單的通話
function f1(){ return this; } f1() === window; // global object
在這種情況下,
this
的價值不是由呼叫建立。由於代碼不是嚴格模式,因此this
的值必須始終爲對象,因此它默認爲全局對象。
所以,當你調用一個函數作爲func()
,this
指的是全局對象。而這正是你在這裏做什麼:
onclick="test()"
你是正確的,this
在事件處理中參照處理程序綁定到元素,但test
不是事件處理程序,它是在體一個事件處理程序。從屬性值產生的處理程序將看起來像
function(event) {
test();
}
所以你看,這是一個「簡單的調用」,所以沒有什麼this
指問題。
如果你想擁有它指的是按鈕,然後就可以用.call
,調用test
並明確設置this
來傳遞的值:
onclick="test.call(this)"
你覺得**這是什麼* * 應該?按照原樣查看代碼,** this **引用全局對象,而不是按鈕元素。 [更多信息](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope) – alexK85