zoukankan      html  css  js  c++  java
  • 297 hasOwnProperty 与 in

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script>
            // hasOwnProperty  
            // 语法: 对象.hasOwnProperty("属性名");
            // 该方法的作用: 可以检测一个属性是否是对象自身的,如果是,返回true,否则返回false
    
            // hasOwnProperty 是 Object.prototype原型上的方法
            // console.log(Object.prototype);
    
    
            function Person(name){
                this.name = name;
            }
    
            Person.prototype.gender = "male";
    
            var p = new Person("zs");
    
            // console.log(p);
            console.log(p.hasOwnProperty("name"));  // true
            console.log(p.hasOwnProperty("gender"));  // false
            
            // 检测p对象自身有没有 hasOwnProperty 属性
            // 该方法是来源于 Object.prototype 原型上的
            // p实例对象可以访问 hasOwnProperty 该方法
            console.log(p.hasOwnProperty("hasOwnProperty"));  // false
    
            // 数组本身没有push / pop 等方法,这些方法都是存在于数组的原型上(Array.prototype),[] 是可以访问数组原型上的这些方法的。
            console.log([].hasOwnProperty("push")); // false 
    
    
            /*小结:
            hasOwnProperty 在 Object.prototype 原型上
            语法: 对象.hasOwnProperty("属性名");
            作用: 是检测属性是否是对象自身的。*/
        </script>
    </body>
    </html>
    

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script>
            /*hasOwnProperty 与 in 比较
    
            in  在 for...in中有使用
            in 单独使用
            语法: 属性名 in 对象
            作用: 检测对象是否可以使用该属性,如果可以,返回true
                  无论该属性是对象自身的还是原型链上的,只要能够使用到,都返回true.
            hasOwnProperty 作用: 判断属性是否是自身的。*/
    
    
            function Person(name){
                this.name = name;
            }
    
            Person.prototype.gender = "male";
            Object.prototype.sex = "female";
    
            var p = new Person("zs");
    
            // p 能否使用name属性
            console.log("name" in p);  // true
            console.log("gender" in p);  // true
            console.log("hasOwnProperty" in p);  // true
    
    
    
            // hasOwnProperty 的使用场景:
    
            // p 的原型链:
            // p ==> person.prototype  ==> Object.prototype ==> null;
    
            for(var k in p){
                // 需求: 打印的k只打印对象p自身本身的属性  --- 过滤出对象自身的属性即可
                if(p.hasOwnProperty(k)){
                    console.log(k); // true,说明k遍历所代表的属性是p对象自身的
                }
    
                // 沿着原型链遍历属性
                console.log(k); // name  gender  sex
            }
    
    
            /*小结:
             in  语法:   "属性名" in 对象
                 作用: 检测属性是否可以使用
             hasOwnProperty
                 语法:  对象.hasOwnProperty("属性名")
                 作用:检测属性是否是对象自身的
                 使用场景:  for ... in 循环中过滤出对象自身的属性*/
        </script>
    </body>
    </html>
    
  • 相关阅读:
    51nod——1174 区间中最大的数(ST)
    「学习笔记」Ubuntu 下手动安装 Emacs
    [学习笔记] 2-SAT
    「解题报告」 [JXOI2017]数列 (DP)
    「解题报告」 [UOJ#62] 怎样跑得更快 (莫比乌斯反演)
    「学习笔记」杜教筛
    「学习笔记」Dirichlet卷积 莫比乌斯函数 莫比乌斯反演
    「学习笔记」向量外积(叉乘)
    网络流24题
    「解题报告」[网络流24题] 16.数字梯形问题 (最大费用最大流)
  • 原文地址:https://www.cnblogs.com/jianjie/p/12334602.html
Copyright © 2011-2022 走看看