对象枚举

对象枚举

枚举其实就是遍历(enumeration)

for in   

目的: 遍历对象

语句:for(var 变量名  in 对象)

var obj = {
        name : "zhangsan",
        sex : 'boy',
        age : 18,
    }
    for(var prop in obj){
        console.log(prop + ' ' + typeof(prop) +' '+ obj[prop]);
    }

控制台就会遍历打印对象里面的属性名。

这里就要注意一下,在for in  枚举里面不能用  对象名.变量名(obj.prop)  来调用对象的属性值 ;

原因是:对象名.变量名(obj.prop)会隐式 转换成    对象名['变量名'](obj['prop']),此时变量名就会当成对象里面的属性名,所以不能调用出对象中的属性值。

正确写法: 对象名[变量名](obj[prop])


1、has OwnProperty

判断属性是不是自己的, 如果是,返回true;不是,返回false

属于过滤性方法

var obj ={
        name : '13',
        age : 123,
        sex : 'male',
        height : 180,
        weight : 75,
        __proto__ : {
            lastName : "deng",
        }
    }
    for(var key in obj){
        if(obj.hasOwnProperty(key)){
            console.log(obj[key]);
        }
    }

打印属性值

由此可见,不会输出__proto__因为它不是obj的属性,他指向object的原型对象。

hasOwnProperty 与for in 一般一起使用,过滤掉不是对象中的属性。


2、in

只能判断在这个对象上调用这个属性

用法: (就上个例子)

‘height’in obj  ----->打印:true

'lastName' in obj  ------>打印:true


3、instanceof 

A 对象  是不是 B构造函数构造出来的

看A对象的原型链上     有没有   B的原型

A    instanceof    B

例如:

function Person() {}
        var person = new Person();
       console.log(person instanceof Object) ;

打印  : true



猜你喜欢

转载自blog.csdn.net/qq_41713692/article/details/80456612
今日推荐