JavaScript中in操作符的学习

 

首先:附上MDN官网IN操作符的介绍(原文链接

下面是具体翻译:

  in:

    概括:

      判断指定对象是否存在指定属性,如果存在,返回true,否则,false

    语法:

      prop in objectName

    参数说明:

      prop:代表对象的属性(字符串类型)或数组的索引(数值类型)

      objectName:待检测的对象

    描述:

        例子帮助说明:

        检测数组的键值:

          

1 var ary=['one','two','three'];
2 
3 ary.length=3;
4 
5 console.log(1 in ary);  //true 
6 
7 console.log('three' in ary);//false
8 
9 console.log(length in ary);//false

  这里要特别注意第7行,in 只能判断数组的键!

        检测对象的属性(也许有同学会问能不能检测对象的方法呢?至少我写到这里的时候想到了,通过测试,答案是肯定的。你也可以自己试试。):

1 var obj={
2         name:'bird',
3         sex:'',
4         age:22
5 };
6 
7 console.log('sex' in obj);//true

  这里要特别注意 字符串 类型,我就犯了这种错,没加引号,导致输出false,感谢Franky

关于in操作符用在对象字面量和由Stirng construtor构造的string对象的不同:

 1 var obj =new String('Hello Javascript');
 2 
 3 console.log('length' in obj);//true
 4 
 5 console.log('toString' in obj);//true
 6 
 7 var str='Hello World';
 8 
 9 console.log('toString' in str);//typeError
10 
11 console.log('length' in str);//typeError

  关于这点,更详细的说明可以点击这里

in操作符在delete运算后的用法:

  如果你通过delete删除对象的某一属性,再用in检测该属性,会返回false(延伸阅读:JavaScript中delete的用法(JavaScript秘密花园 - Object, Prototype))

 1 //对象
 2 var animal ={
 3      name:'bird',
 4      love:'sing',
 5      speed:'80'
 6 };
 7 
 8 delete animal.love;
 9 
10 console.log('love' in animal);//false
11 
12 //数组
13 
14 var sports=['basketball','football','tabletennis','jump'];
15 
16 delete sports[2];
17 
18 console.log(2 in sports);//false
19 
20 console.log(sports);//['basketball','football',undefinded,'jump'];

  继承的属性:

    查找从原型链上继承的属性返回true

1 console.log('toString' in {});//true

  这里的toString方法,是Object.prototype的一个方法。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值