是否可以计算此 JavaScript 对象中的函数和属性的数量:
var Obj = {
prop1: 'Property1',
fun1: function() {
console.log('function 1');
},
fun2: function() {
console.log('function 2');
}
}
所以对于属性,我在这里喊得到 1 和 2 的功能?
是否可以计算此 JavaScript 对象中的函数和属性的数量:
var Obj = {
prop1: 'Property1',
fun1: function() {
console.log('function 1');
},
fun2: function() {
console.log('function 2');
}
}
所以对于属性,我在这里喊得到 1 和 2 的功能?
var fCount = 0,
pCount = 0;
for ( var i in Obj ) {
if ( Obj.hasOwnProperty(i) ) {
if ( typeof Obj[i] === "function" ) {
fCount++;
} else {
pCount++;
}
}
}
干得好:
Object.properties_size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key) && !(obj[key] instanceof Function)) size++;
}
return size;
};
Object.functions_size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key) && obj[key] instanceof Function) size++;
}
return size;
};
var prop_size = Object.properties_size(Obj);
var func_size = Object.functions_size(Obj);
当然,很简单:
var numFunctions = 0;
for (var p in Obj)
{
if (Obj.hasOwnProperty(p) && typeof Obj[p] === 'function')
{
numFunctions++;
}
}
注意 prop1
, fun1
, 和fun2
都是的属性Obj
。JavaScript 中的对象属性值可以保存任何值,而不仅仅是字符串。(大卫的回答正确地显示了如何获得非函数属性计数。)
你可以这样做
var num = 0;
for ( var k in Obj ) {
num += ( Obj[k] && Function == Obj[k].constructor );
}