in操作符

提醒:本文发布于 2882 天前,文章内容可能 因技术时效性过期 或 被重新修改,请谨慎参考。

TOC
  1. 1. 数组里的in
  2. 2. 对象里的in
  3. 3. 其他

数组里的in

var a;
a in ['a','b','c'] // false

解释:尽管数组里面有 a 这个项, 但是检查的确实数组本身的特征, 比如 length,constructor之类的属性

var arr = ['one','two','three','four'];
arr.five = '5'; //这里是按照 键值 的方式给数组自身添加属性
arr.six = '6'; //这里是按照 键值 的方式给数组自身添加属性
// arr.push('test'); //给数组内部添加元素
4 in arr; //false 原来的素组不存在第5个元素
0 in arr; //true 存在第1个元素
'one' in arr; //false
'five' in arr; //true, 通过 键值 添加进去的属性
'length' in arr;//true 这个是数组本身的特性

对象里的in

var obj = {"a":1,"b":2,"c":3}
'a' in obj ; //true,键值属性
'constructor' in obj; //true,自身的特性(属性) 其实也是键值属性

其他

    (alert(123))in(alert(321));
(alert(123))in""
""in(alert(321))

像这样的语句,都能执行, 是因为浏览器会先执行了in左右两边的语句,再做出对比.

也许在一些XSS漏洞中,这种书写会有帮助.

访客评论