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

     

  • 相关阅读:
    32 最小子串覆盖
    31 数组划分
    29 交叉字符串
    动态规划
    18 带重复元素的子集
    17 子集
    16 带重复元素的排列
    23.二叉树的后续遍历序列
    J.U.C-其他组件
    21.Longest Palindromic Substring(最长回文子串)
  • 原文地址:https://www.cnblogs.com/zimengxiyu/p/11314092.html
Copyright © 2011-2022 走看看