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>

posted @ 2020-09-01 22:22  Smile*^  阅读(708)  评论(0编辑  收藏  举报