我很迷惑:
为什么inline onlick,我们必须写onclick="hello()",但是在JS中,我们应该写btn.onclick=hello or btn.addEventListener('click',hello);
对于常规函数,为什么使用 inline onlick,“this”指的是窗口,而对于 js 调用,“this”指的是按钮。
我不明白最后两个按钮
根据w3school,在一个函数中,this指的是全局对象。 https://www.w3schools.com/js/js_this.asp
在常规函数中,this 关键字表示调用该函数的对象,可以是窗口、文档、按钮或其他任何东西。 https://www.w3schools.com/js/js_arrow_function.asp
const arrayBtn = document.querySelector(".arrowFunc");
const regBtn = document.querySelector(".regFunc");
hello = () => console.log("i am arrow function" + this);
function hiii(){
console.log("i am regular function" + this);
}
arrayBtn.addEventListener("click", hello);
regBtn.addEventListener("click", hiii);
<button onclick="hello()">This calls an arrow function with an inline onclick</button>
<button class="arrowFunc">This calls an arrow function with event listener</button>
<button onclick="hiii()">This calls an regular function with an inline onclick</button>
<button class="regFunc">This calls an regular function with event listener</button>
<button onclick="function tes(){console.log(this)}tes()">button</button>
<button onclick="console.log(this)">button</button>
[Log] i am arrow function[object Window] <br>
[Log] i am arrow function[object Window] <br>
[Log] i am regular function[object Window] <br>
[Log] i am regular function[object HTMLButtonElement] <br>
[Log] Window {document: #document, window: Window, NaN: NaN, nalert: function, obj: {name: "my_obj"}, …} <br>
[Log] <button onclick="console.log(this)">button</button>
至尊宝的传说
相关分类