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

  • 相关阅读:
    持久层框架:MyBatis 3.2(2)
    持久层框架:MyBatis 3.2(1)
    循环结构(二)
    Android LayoutInflater详解
    为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
    Android Support v4、v7、v13的区别和应用场景
    Android的string-array数据源简单使用
    FragmentTabHost切换Fragment时避免重复加载UI
    Ubuntu 安装Chrome步骤
    慢慢来,让好习惯自然来
  • 原文地址:https://www.cnblogs.com/weixin2623670713/p/13599108.html
Copyright © 2011-2022 走看看