获取数组的长度很简单,有时呢也会遇到需要获取对象长度,那么这儿简单的说下几个方式:
1.getOwnPropertyNames()会将对象属性名取出并组成一个数组
var testObj = {
name1: "value1",
name2: "value2"
};
alert(Object.getOwnPropertyNames(testObj).length); // 2
2.利用for in 遍历对象,并用hasOwnProperty()判断对象是否具有某属性(自身具有而非继承)
var attributeCount = function(obj) {
var count = 0;
for(var i in obj) {
if(obj.hasOwnProperty(i)) { // 建议加上判断,如果没有扩展对象属性可以不加
count++;
}
}
return count;
}
var testObj = {
name1: "value1",
name2: "value2"
};
alert(attributeCount(testObj)); // 2
3.利用构造函数加原型对象
function TestObj(name, age) {
this.name = name,
this.age = age
}
TestObj.prototype.proCount = function() {
var count = 0
for(pro in this) {
if(this.hasOwnProperty(pro)) { // 这里扩展了对象,所以必须判断
count++;
}
}
return count;
}
var testObj = new TestObj('名称', 12);
alert(testObj.proCount()); // 2