有人能解释一下这两个代码之间的区别吗?为什么第二个有效,而第一个无效;t
Can anyone explain the difference between those two codes? And why does the second one work and the first doesn't?
HTML:
<input type="button" name="red" onclick="dis()">
这是JavaScript的第一个代码:
function dis() {
alert(this.name)
}
这是工作版本:
HTML:
<input type="button" name="red" onclick="dis(this)">
JavaScript:
function dis(a) {
alert(a.name)
}
在第一种情况下,您在全局范围内调用dis()
。在这种情况下,this
是全局对象
在第二种情况下,您还可以在全局范围内调用dis()
。但您将当前的this
值作为参数传递给函数。
为了使第一种情况和第二种情况相同,你应该这样重写:
<input type="button" name="red" onclick="dis.call(this)">
通过这种方式,您可以将当前this
传递给函数。
这方面的一般规则是查看函数左侧的内容(换句话说,谁被称为函数):
dis() // -> on the left nothing stands, so `this` will correspond to global object
a.dis() // -> on the left `a` stands, so `this` will correspond to `a`
new dis() // -> on the left `new` keyword stands, so `this` will correspond to newly created object
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 为什么不'在JQuery中找到第二个css选择器的工作
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- CORS-重定向到第二个GET正在接收的页面
- 正则表达式与数字中的第二个点匹配
- 如何在react js中移动第二个组件
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 关闭第二个事件源上的第一个事件源's onopen方法
- D3从嵌套的JSON中绘制第二个圆环图
- IE11中的第二个调用取消了第一个Fetch API调用
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 角度指令:指向第二个元素
- Javascript进度仅在第二个表单提交后有效
- Ajax 构建关系按钮有效,用于显示引导模式的第二个按钮有效,但两者不能协同工作
- 为什么 AJAX 对第一个函数的响应“_blank”有效,但对第二个函数无效
- 为什么我的第一个截图有效,而我的第二个截图不起作用
- 为什么第一个有效,第二个无效?全局和私有变量声明
- 有人能解释一下这两个代码之间的区别吗?为什么第二个有效,而第一个无效;t
- JavaScript表单验证:为什么第一个有效,而第二个无效't
- JavaScript,如何以最有效的方式从字符串中获得第二个值,如“;var1-var2”;