您的位置:首页 > Web前端 > JavaScript

【Javascript学习笔记】JavaScript中in操作符的学习(附上MDN上IN的翻译说明)

2011-09-12 14:18 721 查看
首先:附上MDN官网IN操作符的介绍(原文链接

下面是具体翻译:

  in:

    概括:

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

    语法:

      prop in objectName

    参数说明:

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

      objectName:待检测的对象

    描述:

      例子帮助说明:

        检测数组的键值:

          

var ary=['one','two','three'];

ary.length=3;

console.log(1 in ary);  //true

console.log('three' in ary);//false

console.log(length in ary);//false


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

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

var obj={
name:'bird',
sex:'男',
age:22
};

console.log('sex' in obj);//true


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

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

var obj =new String('Hello Javascript');

console.log('length' in obj);//true

console.log('toString' in obj);//true

var str='Hello World';

console.log('toString' in str);//typeError

console.log('length' in str);//typeError


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

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

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

//对象
var animal ={
name:'bird',
love:'sing',
speed:'80'
};

delete animal.love;

console.log('love' in animal);//false

//数组

var sports=['basketball','football','tabletennis','jump'];

delete sports[2];

console.log(2 in sports);//false

console.log(sports);//['basketball','football',undefinded,'jump'];


  继承的属性:

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

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


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

参考资料:

    1.MDN文档

    2.Javascript学习笔记-详解in运算符

    3.[翻译]JavaScript秘密花园 - Array, Array Constructor, for in loop, typeof, instanceOf更详细地内容请点这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: