zoukankan      html  css  js  c++  java
  • JS isPrototypeOf 和hasOwnProperty 还有in的区别

    isPrototypeOf 和hasOwnProperty 的区别

    isPrototypeOf 是判断原生链上是否有该对象

    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对象的一个属性或对象。

    扩展 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>
    
  • 相关阅读:
    剑指Offer(链表)-从尾到头打印链表
    Java数据结构与算法-链表
    剑指Offer(数组)-数组中重复的数字
    剑指Offer(数组)-二维数组的查找
    Java冒泡排序法实现
    springMVC全局异常配置
    CookieUtil工具类
    算法
    Java
    算法
  • 原文地址:https://www.cnblogs.com/aoximin/p/13186499.html
Copyright © 2011-2022 走看看