创建两个函数来计算对象属性/方法

时间:2013-08-20 01:15:35

标签: javascript

Object.size = function(obj){
var size = 0, key = "";
   for(key in obj){
      if(obj.hasOwnProperty(key)){
        size++;
      }
   }
  return size;
}

这是我创建的第一个功能。任务是创建两个函数,一个仅计算属性,另一个计算属性和方法。 (将计数限制为原始对象,我还需要将函数添加到Object原型中,以便我创建的每个对象都有两个自动作为属性可用的函数。)

那么我该怎么做第二个功能呢? (你能不能看看我的第一个,看看我的第一个功能是否有任何问题?) 非常感谢你!

2 个答案:

答案 0 :(得分:0)

属性和方法的数量:

Object.keys(obj).length

物业数量:

#test used by underscore.js
function isMethod(obj, func) {
    return !!(obj.func && obj.func.constructor && obj.func.call && obj.func.apply);
}

function num_properties(obj){   
    var size = 0;
    for(key in obj){
        if (!isMethod(obj, key)){
            size++;
        }
    }
    return size;
}

答案 1 :(得分:0)

你可以返回一个对象的数组[#properties,#method,#properties不是方法], 或只返回你想要的索引 -

Object.size= function size(obj){
    var props= 0, methods= 0, key;
    for(key in obj){
        if(obj.hasOwnProperty(key)){
            if(typeof obj[key]== 'function')++methods;
            ++props;
        }
    }
    return [props, methods, props-methods];
}