js 取对象属性的个数

function Dog(name, age){
    this.name = name,
    this.age = age 
}

Dog.prototype.proCount = function(){
      var count = 0
      for(pro in this){
         count++;
      }
      return count
} 
var dog = new Dog('大毛', 12);
console.log(dog.proCount())

clipboard.png

取dog对象里属性的个数 可是得出 3 ,为什么

阅读 9.8k
5 个回答

clipboard.png

因为for in遍历会遍历原型中的属性,所以是三个,只需添加这样一个判断

或者更暴力一点

clipboard.png

因为for...in会迭代他所有的自身属性和从prototype里面继承来的可枚举属性属性

所以,for(pro in this)遍历了三个name, age, proCount

如果不想遍历proCount可以用hasOwnProperty方法判断

 for(pro in this){
     if(this.hasOwnProperty(pro)) count++;
  }

还有一个proCount方法

proCount 方法本身也是一个

函数也是对象的属性,题主在proCount中打印出pro来就应该能看见了,属性有name、age、proCount。
ECMA-262对于对象的定义:无序属性的集合,其属性值可以包含基本值、对象或者函数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题