JavaScript中instanceof对于不同的构造器可能都返回true
2013-03-06 21:26
323 查看
JavaScript中instanceof对于不同的构造器可能都返回true
我们知道 instanceof 运算符用来检查对象是否为某构造器的实例。下面列举它返回true的各种情景。1、对象obj是通过new Constructor创建的,那么 obj instanceof Constructor 为true
?
?
?
?
?
Java中定义了一个类Person,实例p对于Person和Object都返回true
?
?
知道了这些,JS中以下的表现就不奇怪了
?
由于JS的动态语言特性,可以在运行时修改原型,因此下面返回false也不足为奇了。因为A.prototype已经不在a的内部原型链中,链条被打断了。
?
实际在ECMAScript标准中(以5.1为准),instanceof 内部实现会调用构造器的内部方法[[HasInstance]],描述如下
假如F是一个函数对象,当F(V)执行时,以下步骤将发生:
1、如果instanceof左运算元V不是对象类型,直接返回false
?
?
Firefox18:
Chrome24:
Safari6:
Opera12:
IE10:
4、不断的执行以下逻辑:将V设为内部原型的V,如果V是null则返回false,如果V和O都指向同一个对象,则返回true。
相关文章推荐
- JavaScript中instanceof对于不同的构造器可能都返回true
- 解析JavaScript中instanceof对于不同的构造器或许都返回true
- 解析JavaScript中instanceof对于不同的构造器或许都返回true
- 同一个String在使用不同的charset编码的时候equals仍然是返回true吗
- javascript new Date()函数在不同浏览器上返回不同的值
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代
- javascript中new function()的返回值,同时利用return的返回不同的结果
- 给定不同数字的集合,返回所有可能的排列。
- instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例 , 返回true或者false
- 确定字符互异 确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代
- 测试instanceof:如果是女人的instanceof返回true, 则一定是人的instance
- 对于不同的json返回类型,ajax的不同取值方法
- 在 JavaScript 中, (a ==1 && a== 2 && a==3) 是否有可能为 true?
- 根据当前时间返回不同文本,JavaScript代码
- mysql_query() ,注意返回值可能为true或false
- 解决Myeclipse10中使用javascript验证form表单,返回true(false)不支持的问题
- 写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;
- javascript返回数组的不同值
- javascript中使用ajax异步验证数据库后方法return true时总是返回undefined
- Javascript对于不同浏览器的兼容性