【问题标题】:Properties set on __proto__ override directly set properties in Chrome在 __proto__ 上设置的属性会覆盖 Chrome 中直接设置的属性
【发布时间】:2010-12-14 15:31:28
【问题描述】:

有了这个 html:

<select><option>hi</option></select>

<script type="text/javascript">

var select = document.getElementsByTagName("select")[0];

select.__proto__.setValue = "foo";
select.setValue = "bar";

alert(select.setValue);

</script>

在 Firefox 和 Opera 中,输出为“bar”,但在 Chrome 中,输出为“foo”。如果我跳过__proto__ 定义,所有浏览器都会输出“bar”。

如何让 Chrome (8.0) 输出属性的对象特定值,而不是原型上设置的值?

【问题讨论】:

  • 在 Chrome 9 和 10 中按预期工作,所以这很可能是一个错误。附带说明,不要乱用内置对象,这仍然适用于 HTMLElements。
  • @Ivo:我可以确认它在 Chrome 8 中不起作用。作为旁注,我猜这就是当多个浏览器尝试实现相同的非标准功能时发生的情况 - 至少其中一个他们一定会弄错的:-p
  • @AndyE 我确信我可以在问题列表的某个地方找到一个错误,也就是说,如果我花了接下来的两天时间搜索它。
  • 感谢 Ivo,更新到开发频道(当前为 9.0.*)修复了它。

标签: javascript google-chrome


【解决方案1】:

如上面的 cmets 所述,当前版本的 Chrome 已解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多