gpt4 book ai didi

javascript - (this) 在这段代码中如何工作,javascript?

转载 作者:行者123 更新时间:2023-11-30 09:13:51 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的待办事项应用程序作为一项任务,在此代码中,每次单击按钮时都会创建一个复选框,并且计数器会跟踪未选中的复选框,因此我做了一个简单的 if-else 语句。 .如果单击该框,则减少未选中的计数器,反之亦然。.我的问题是 this,这里的代码我觉得它是合乎逻辑的,因为 validate() 已经是一个属性复选框的它不应该通过 this

const aCheckbox = document.createElement("INPUT");
aCheckbox.setAttribute('type', 'checkbox');
aCheckbox.setAttribute('onclick', 'validate()');

function validate() {
if(this.checked) {
console.log('Checked');
}
}

上面的代码不行,我试了下面的代码确实可以,不同的是this是在调用validate()时传递的,而第一个代码 this 是在 validate() 中调用的,那么为什么即使在复选框中调用了该函数,第一个代码也不起作用?

const aCheckbox = document.createElement("INPUT");
aCheckbox.setAttribute('type', 'checkbox');
aCheckbox.setAttribute('onclick', 'validate(this)');

function validate(x){
if(x.checked){
console.log('Checked');
}
}

最佳答案

JavaScript this 关键字指的是它所属的对象。

它有不同的值(value),这取决于它被使用的地方:

在方法中,this 指的是所有者对象。单独的,this指的是全局对象。
在函数中,this 引用全局对象。
在一个函数中,在严格模式下,this 是未定义的。
在事件中,this 指的是接收事件的元素。
call()apply() 等方法可以将 this 引用到任何对象。

关于javascript - (this) 在这段代码中如何工作,javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56585771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com