zoukankan      html  css  js  c++  java
  • isPrototypeOf,instanceof, hasOwnProperty,in的作用与区别

    isPrototypeOf

    作用:检测一个对象是否是另一个对象的原型。或者说一个对象是否被包含在另一个对象的原型链中

    function Fn(name){
                    this.name=name;
    }
    var user=Object.create(Fn);//Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__(即原型指向这个对象)。
    console.log(Fn.isPrototypeOf(user)) //true
                
    var user1=new Fn('app');
    console.log(Fn.prototype.isPrototypeOf(user1)) //true

    instanceof

    作用:检测一个对象是否是另一个对象的实例。

    function Fn(name){
                    this.name=name;
    }
    var user1=new Fn('app');        
    console.log(user1 instanceof Fn) //true

    hasOwnProperty

    作用:对象的hasOwnProperty()方法用来检测给定的属性是否是对象的自由属性,如果是继承属性则返回false(可以用来剔除原型链上的属性

    function Fn(name){
        this.name=name;
    }
    Fn.prototype.say="hello";
    var user1=new Fn('app');
    console.log(user1.hasOwnProperty('say')) //false 原型链上的属性不是对象自身的属性返回false
    console.log(user1.hasOwnProperty('age')) //true  对象自身的属性返回true

    循环打印出对象自身的属性

    function Fn(name){
        this.name=name;
    }
    Fn.prototype.say="hello";
    var user1=new Fn('app');
    //循环打印出对象自身的属性
    for(var i=0 in user1){
        if(user1.hasOwnProperty(i)){
            console.log([i]+":"+user1[i]);//name:app
        }
    }

    in

    作用:判断对象的属性是自由属性还是原型链上的属性,如果对象的自由属性或者继承属性中包含这个属性则返回true。

    function Fn(name){
        this.name=name;
    }
    Fn.prototype.say="hello";
    var user1=new Fn('app');
    console.log('name' in user1) //true  对象自身的属性返回true
    console.log('say' in user1) //true  对象原型上的属性返回true

     

  • 相关阅读:
    TIF转JPG
    跨线程取出控件的值的写法(不是跨线程赋予控件值)
    oracle根据正则表达式查找对应的字段
    oracle数据库连接字符串
    access检测表没有的字段,添加之
    解决 Unable to load DLL 'OraOps9.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)
    oracle关键字使用
    to_number,Extract oracle的关键字
    OracleCommand.CommandText 无效
    调用带参数的线程两种方法
  • 原文地址:https://www.cnblogs.com/zimengxiyu/p/11314092.html
Copyright © 2011-2022 走看看