zoukankan      html  css  js  c++  java
  • instanceof 的作用

    instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性.

    语法

      object instanceof constructor

    从语法的字面意思来理解就是 某一个对象是否有该构造器生成

    从实际效果上来讲,instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链 ( __proto__ ) 上

    也可以用js来替代  constructor.prototype.isPrototypeOf( object )

    通过js脚本来实现 instanceof 运算符:

      

    function _instanceof( object,cons ){
        if( object.__proto__ !== null ){
            if( object.__proto__ == cons.prototype ){
                return true
            }
            return _instanceof( object.__proto__ , cons )
        }
        return false
    }
    
    function A(){}
    
    var c = new A()
    _instanceof(c,A);//true
    _instanceof(c,Object);//true

    例子:

    // 定义构造函数
    function C(){} 
    function D(){} 
    
    var o = new C();
    
    
    o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototype
    
    
    o instanceof D; // false,因为 D.prototype不在o的原型链上
    
    o instanceof Object; // true,因为Object.prototype.isPrototypeOf(o)返回true
    C.prototype instanceof Object // true,同上
    
    C.prototype = {};
    var o2 = new C();
    
    o2 instanceof C; // true
    
    o instanceof C; // false,C.prototype指向了一个空对象,这个空对象不在o的原型链上.
    
    D.prototype = new C(); // 继承
    var o3 = new D();
    o3 instanceof D; // true
    o3 instanceof C; // true
    

      

  • 相关阅读:
    hdu 1017 A Mathematical Curiosity 解题报告
    hdu 2069 Coin Change 解题报告
    hut 1574 组合问题 解题报告
    hdu 2111 Saving HDU 解题报
    hut 1054 Jesse's Code 解题报告
    hdu1131 Count the Trees解题报告
    hdu 2159 FATE 解题报告
    hdu 1879 继续畅通工程 解题报告
    oracle的系统和对象权限
    oracle 自定义函数 返回一个表类型
  • 原文地址:https://www.cnblogs.com/xiaxiaodong/p/8276836.html
Copyright © 2011-2022 走看看