js面向对象精要-理解对象

343 阅读1分钟

检查对象中是否存在某个属性

  • 一般通过点的方式判断
    if(person.age){
        //操作
    }
  • 这样判断方式是不正确的,因为在js中,当if判断中的值是一个对象,非空字符串,非空数字或true时,结果为真。当是一个null,undefied,0,false,NaN,空字符串结果为假。由于对象属性可以包含这些为假的值,可能会导致错误。比如person.age=0,虽然age属性确实存在,但是if条件确为假。
  • 应该这样判断对象中是否存在某个属性:in操作符
    if(age in person){
        //操作
    }

对象的属性枚举

  • for-in
    var obj = {
        name:'aa',
        age:2
    }

    for(item in obj){
        console.log(item)// 返回健
        console.log(obj[item])//返回值
    }
  • 获取对象中所有的健
    • Object.keys() 返回数组
  • for-in 和Object.keys()的区别
    • for-in会遍历自有属性和原型属性
    • Object.keys()只会遍历自有属性