• JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别(转载)


    JS中isPrototypeOf 和hasOwnProperty 的区别

    1、isPrototypeOf 
    isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false。 
    格式如下: 
    object1.isPrototypeOf(object2); 
    object1是一个对象的实例; 
    object2是另一个将要检查其原型链的对象。 
    原型链可以用来在同一个对象类型的不同实例之间共享功能。 
    如果 object2 的原型链中包含object1,那么 isPrototypeOf 方法返回 true。 
    如果 object2 不是一个对象或者 object1 没有出现在 object2 中的原型链中,isPrototypeOf 方法将返回 false。 

    2、hasOwnProperty 
    hasOwnProperty判断一个对象是否有名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。 
    如果该属性或者方法是该 对象自身定义的而不是器原型链中定义的 则返回true;否则返回false; 
    格式如下: 
    object.hasOwnProperty(proName); 
    判断proName的名称是不是object对象的一个属性或对象。

    本文转自:http://www.cnblogs.com/ppforever/p/3921481.html

    原创文章请随便转载。愿和大家分享,并且一起进步。-- 江 coder
     
     

    js使用in和hasOwnProperty获取对象属性的区别

    in判断的是对象的所有属性,包括对象实例及其原型的属性; 
    而hasOwnProperty则是判断对象实例的是否具有某个属性。

    示例代码:

    复制代码
    <script type="text/javascript">
        function Person(){
            }
            Person.prototype.name = "allen";
    
            var person = new Person();
            console.log(person.hasOwnProperty("name")); //false
            console.log("name" in person); //true
            console.log(person.name); //"allen"
    
            person.name = "justforse";
            console.log(person.hasOwnProperty("name")); //true
            console.log("name" in person); //true
            console.log(person.name); //"justforuse"
    
            delete person.name;
            console.log(person.hasOwnProperty("name")); //false
            console.log("name" in person); //true
            console.log(person.name); //"allen"
    </script>
    复制代码

    以上代码执行的时候,name属性要么是从实例中获取的,要么是来源于原型,所以使用in 来访问 name属性始终返回true;而hasOwnProperty()只在属性存在与对象实例中时才返回true,当删除了实例中的name属性后,就恢复了原型中name属性的连接,所以返回allen。

    ps: 本文转自:https://www.cnblogs.com/jiangxiaobo/p/6243993.html

  • 相关阅读:
    SpringBoot(十二)------国际化配置
    SpringBoot(十一) ----SpringBoot结合mybatis实现增删改查
    SpringBoot(十)----SpringMVC自动配置&扩展配置
    SpringBoot学习(九) ------访问静态web资源
    leetcode-----两数相加
    JDBC — 学习大纲
    网络编程
    StringBuffer
    代理
    加载文件的两种方式
  • 原文地址:https://www.cnblogs.com/zxt-17862802783/p/10867623.html
Copyright © 2020-2023  润新知