zoukankan      html  css  js  c++  java
  • 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

     
     

    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。

  • 相关阅读:
    Toolbar设置回退箭头的方法
    Android进程绝杀技--forceStop
    线程池的经典使用
    Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
    adb pull apk
    工厂模式_工厂方法模式
    工厂模式_简单工厂模式
    spring_aop
    代理模式_动态代理
    代理模式_静态代理
  • 原文地址:https://www.cnblogs.com/aslxwjh/p/10322013.html
Copyright © 2011-2022 走看看