• js对象枚举


    js对象枚举

    使用for in关键字,对象属性名挨次。

    访问属性对象点,内部转换括号间。

    属性仅在对象中,含有自己属性通。

    属性是否原型链,判断in字后边见。

    判断包含有原型,实例左右构造停。

    使用for in关键字,对象属性名挨次。

    遍历对象使用 for 和 in 这两个关键字

    for(var pro in obj){}

    再循环的时候 对象的属性名字 会挨个 赋值到 pro 这个变量上 当然这个属性可以随便屈名字

    访问属性对象点,内部转换括号间。

    我们在编程的时候访问属性常用方式 obj.property 这样的操作内部实际上是转换成 obj[property]

    <script>

        var obj = {

            name: "老铁",

            age: 20,

            show: function() {

                console.log("handsome");

            }

        }

        for (var pro in obj) {

            console.log(pro + " == " + obj[pro]);

            /*

            name == 老铁

            js.html:21 age == 20

            js.html:21 show == function() {

                console.log("handsome");

            }

            */

        }

    属性仅在对象中,含有自己属性通。

    遍历的时候有时候我们只是需要当前对象中的属性 而不是继承链上的

    这个时候系统给我们提供了一个方法 ob.hasOwnProperty(属性名) 判断这个属性是当前对象而并非继承链

      <script>

        function Person() {

            this.name = "小城贝尔";

            this.age = "23";

            this.tall = 180;

        }

        Person.prototype.handsome = 99;

        Person.prototype.school = "西安体育学院";

        Person.prototype.tall = 175;

        var person = new Person();

        for (var pro in person) {

            console.log(pro + "===> " + person[pro]);

            /*

                name===> 小城贝尔

                age===> 23

                tall===> 180

                handsome===> 99

                school===> 西安体育学院

            */

        }

        //上边我们可以看到 这样会将原型链上的属性一并遍历出来 如果我们不想获得原型上的属性

        // 就可以使用 obj.hasOwnProperty("属性名");判断是否是只属于 对象本身

        for (var pro in person) {

            if (person.hasOwnProperty(pro)) {

                console.log(pro + "==\=> " + person[pro]);

                /*

                    name===> 小城贝尔

                    age===> 23

                    tall===> 180

                */

            }

        }

    </script>

    属性是否原型链,判断in字后边见。

    如果你只是想判断这个属性值 是属于这个对象原型链 那么 可以使用 in

    属性名 in 对象 (属性名必须加引号不然会报错)

    <script>

        function Person() {

            this.name = "小城贝尔";

            this.age = "23";

            this.tall = 180;

        }

        Person.prototype.handsome = 99;

        Person.prototype.school = "西安体育学院";

        Person.prototype.tall = 175;

        var person = new Person();

        var inres = "tall" in person; //true

        var inres1 = "age" in person; //true

        var inres2 = "school" in person; //true

        console.log(inres);

        console.log(inres1);

        console.log(inres2);

    </script>

    property in 构造函数

    判断包含有原型,实例左右构造停。

    判断一个对象是不是通过某个构造函数构建出来的

    A(对象) instance B (构造函数)

    实际上是 判断的是 A 的原型链是否包含 B 的原型链

    因为当你测试的时候 判断是否是它超类构造出来的结果也是true

     <script>

        function Person() {

            this.name = "小城贝尔";

            this.age = "23";

            this.tall = 180;

        }

        Person.prototype.handsome = 99;

        Person.prototype.school = "西安体育学院";

        Person.prototype.tall = 175;

        var person = new Person();

        var ins = person instanceof Person; //true

        var ins1 = person instanceof Object; //true

        console.log(ins);

        console.log(ins1);

    </script>

  • 相关阅读:
    NOI2004 郁闷的出纳员 [Splay]
    关押罪犯 [二分]
    SCOI2010 传送带 [三分/模拟退火]
    POI2007 MEG-Megalopolis [树状数组]
    食物链 [并查集]
    SDOI2011 染色 [树链剖分]
    国家集训队 数颜色 [莫队]
    JSOI2008 星球大战 [并查集]
    [NOI2002] 银河英雄传说 (带权并查集)
    种树 [堆]
  • 原文地址:https://www.cnblogs.com/weixin2623670713/p/13599108.html
Copyright © 2020-2023  润新知