考虑以下代码:
<input type=“button”value=“Debugger Test”onclick=“Debugger;”/><input type=“button”value=“Prototype Test”onclick=“console.log(__proto__);”/>
当您单击“调试器测试”并打开调试器时,您将看到似乎有一个隐式的具有
范围围绕onclick(单击)
,使所有<输入>
的属性无需引用按钮即可访问。
点击“原型测试”记录当前范围的原型。你会看到它是HTML输入元素
的原型,使所有可确定范围的该范围内可用的整个原型链的属性。
有趣的是,当前原型链的范围部分HTML文档
也包括在内。
所有这些都意味着所有全局属性(朗
是其中之一),其他几个特定于按钮的选项将被覆盖。例如。价值
,类型
同样,变量创建元素
(来自文件
)也不起作用,但不可遮蔽追加
(来自ParentNode.prototype(ParentNode原型)
)会的。
所有这一切都在本文中解释对相关问题的回答关于全局变量冲突窗口
属性。
您最好的选择是使用添加事件侦听器的标准方法:添加事件侦听器
.
<input type=“button”value=“Test”(测试)/><脚本>函数lang(){alert(“Hello,World!这次不是HTML事件处理程序属性”);}document.querySelector(“input”).addEventListener(“click”,lang);</脚本>