2010-12-14 172 views
3

有了這個網站:屬性上__proto__覆蓋設置直接設置屬性在Chrome

<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,輸出爲「欄」,但在Chrome中,輸出是「富」。如果我跳過__proto__定義,所有瀏覽器輸出「bar」。

如何讓Chrome(8.0)輸出屬性的對象特定值而不是原型上設置的值?

+0

按照預期在Chrome 9和10中正常工作,所以這很可能是一個錯誤。作爲一個側面提示,不要混淆內建對象,對於HTMLElements來說這仍然適用。 – 2010-12-14 15:43:30

+2

@Ivo:我可以確認它在Chrome 8中不起作用。作爲一個附註,我想這是幾個瀏覽器試圖實現相同的非標準功能時發生的情況 - 至少其中一個必然會出錯:-p – 2010-12-14 15:44:48

+1

@AndyE我相信我可以在問題列表的某處找到一個錯誤,那就是如果我花了接下來的兩天來搜索它。 – 2010-12-14 15:47:08

回答

1

正如上述評論中所述,這在當前版本的Chrome中已得到解決。