zoukankan      html  css  js  c++  java
  • hasOwnProperty,in

    hasOwnProperty,in区别:

      hasOwnProperty:指出一个对象是否具有指定名称的属性

      in:对象是否能够访问此属性(包括直接在对象上访问和通过原型访问)

    看下示例代码:

    (function () {
    
        function Person() {
        }
    
        var p = Person.prototype;
        p.name = "晨落梦公子";
        p.age = 24;
        var person1 = new Person();
        console.log(person1.hasOwnProperty("name")); // false
        console.log("name" in person1); //true
    })();

    补充两行代码

        person1.name = "meng";
        console.log(person1.hasOwnProperty("name")); //true

    利用两者的区别我们可以:判断该属性是存在于对象中还是原型中。

    判断过程,先in如果为true,说明当前对象的父类有此属性,再用hasOwnProperty,true则表示他具有此属性,false就表示他还没有为此属性赋值。

    巧记:hasOwnProperty,hasOwn嘛,就是表示他自己是否有此属性。

       in,在什么里面,当前屋子里面沙发上有的东西也可以说成此屋子有此东西。


    根据以上的思路自己衍生方法,目的是实现,判断对象是否有此原型方法

    Object.prototype.hasPrototypeProperty=function ( pro) {
            return !this.hasOwnProperty(pro) && (pro in this);
        };

    代码应用(person1声明同上)

        console.log(person1.hasPrototypeProperty("name")); //true
    
        person1.name = "晨落梦公子";
        console.log(person1.hasPrototypeProperty("name")); //false

    从应用中可以看出,该方法效果,如果当前对象是原型上的方法则返回true,自己本身声明此属性后则返回false。

  • 相关阅读:
    20171117-构建之法:现代软件工程-阅读笔记
    《团队-爬取豆瓣Top250-团队一阶段互评》
    团队-爬虫豆瓣top250项目-开发文档
    结对编程总结
    结对编程项目总结
    结对-贪吃蛇游戏-开发环境搭建过程
    结对贪吃蛇 结对编项目设计文档
    课后作业 阅读任务 阅读提问4
    课后作业 阅读任务 阅读提问3
    课后作业 现代软件工程 阅读笔记
  • 原文地址:https://www.cnblogs.com/chenluomenggongzi/p/6130685.html
Copyright © 2011-2022 走看看