《JS权威指南学习总结--4.9.3in和instanceof运算符》

内容要点:

     一.in运算符

           in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数数值的属性名,那么表达式返回true。

           例如:

           var point=["x":1,"y":2];

           var a="x" in point; //true:对象里有一个名为"x"的属性

           var b=z in point;     //false:对象里不存在名为"z"的属性

           "toString" in point  //true:对象继承了toString()方法

           var data=[7,8,9]; 

           "0" in data //true:数组包含元素"0"

           1 in data //true:数组转换为字符串

           3 in data  //false:没有索引为3的元素

    二.instanceof运算符

           instanceof运算符希望左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧类的实例,则表达式返回true,否则返回false。

           例如:

           var d=new Date();     //通过Date()构造函数来创建一个新对象。

          d instanceof Date;      //计算结果为true,d是由Date()创建的

          d instanceof Object;    //计算结果为true,所有的对象都是Object的实例。

          d instanceof Number;  //计算结果为false,d不是一个Number对象

          var a=[1,2,3];       //通过数组直接量的写法创建一个数组。

         a instanceof Array; //计算结果为true,a是一个数组。

         a instanceof Object; //计算结果为true,所有的数组都是对象。

         a instanceof RegExp ; //计算结果为false,数组不是正则表达式。

        需要注意的是:所有的对象都是Object的实例。当通过instanceof判断一个对象是否是一个类的实例的时候,这个判断也会包含对"父类" 检测。

        如果右操作数不是函数,则抛出一个类型错误异常。

         

         

 

原文地址:https://www.cnblogs.com/hanxuming/p/5777712.html