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

     

  • 相关阅读:
    高德地图信息窗体轮播及多组坐标点添加
    移动端适配及px转rem
    css伪类样式覆盖
    vue-amap-marker相关问题,信息窗体及自定义图片的偏移问题
    echart自定义图例样式及统计图颜色相关
    ts学习笔记[枚举类型]
    从面试中查漏补缺
    百度编译器插入自定义内容和样式(转)
    .net的母版页相关
    几种Position属性的用法
  • 原文地址:https://www.cnblogs.com/zimengxiyu/p/11314092.html
Copyright © 2011-2022 走看看