• 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

     

  • 相关阅读:
    加载与隐藏显示
    Task 自我总结认知
    修复SDF数据库引擎C#代码
    Windows防火墙开启后 ping不通了 的解决方案
    C# 串口
    WPF DataGrid中单元格运用Combobox的示例
    组合模式
    适配器模式
    【转载】.net 动态代理
    python数组操作
  • 原文地址:https://www.cnblogs.com/zimengxiyu/p/11314092.html
Copyright © 2020-2023  润新知