2010-05-27 85 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