2010-05-27 83 views
43

有人可以告訴我自哪個ECMA版本的IN操作符可用以及哪些瀏覽器(版本)支持它?Javascript IN操作兼容性

說明:

中,操作者可以使用如下所示:

var myObject = { 
    Firstname: 'Foo', 
    Lastname: 'Bar' 
}; 

if('Lastname' in myObject){ 
    // Lastname is an attribute of myObject 
} 

回答

52

它被定義在ECMAScript 3rd edition。它可以在IE 5.5+以及Firefox,Chrome,Opera和Safari的所有使用版本中使用。

你可以使用它的安全知識,它會工作。

使用它來檢查事件支持時,您應該謹慎行事。除舊版Firefox版本以外的所有實現均支持"eventname" in element作爲DOM事件的測試。

"onclick" in document.body; // -> false in old Fx, true in others 
document.body.setAttribute("onclick", ""); 
typeof(document.body.onclick == "function"); // -> true in Fx 
+2

它只在IE 5.5以上; IE 5.0是'in'的'問題瀏覽器',但很顯然,現在擔心已經過去了。 – bobince 2010-05-27 12:01:32

+1

FWIW我在第二版中看不到它@ http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm – 2010-05-27 12:02:30

+1

@Nick:它肯定在3.0,儘管IE不會在出版時不支持它。 ECMAScript 3.1是成爲第五版的發展名稱。 – bobince 2010-05-27 12:03:57

2

據MDC,它的implemented in JavaScript 1.4

根據Wikipedia

  • 的Netscape Navigator 6.0
  • Firefox 1.0以上版本
  • IE 5.5+
  • 歌劇6.0+
  • Safari 3.0以上
  • 鉻1.0+

所以我認爲你可能確定:)

+0

因爲我可以在代碼的前面做'undefined ='defined!';'顯然*是有益的。 – Eric 2010-05-27 11:53:45

+0

@jAndy,好的,我已經編輯出來了。 – Skilldrick 2010-05-27 11:54:41

+1

真的,你應該把它當作另一個答案,因爲現在我們的評論沒有任何意義。 – Eric 2010-05-27 11:57:26