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

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

那么我该如何做第二个功能呢?(请您看看我的第一个函数,看看我在第一个函数中是否做错了什么?)非常感谢!

4

2 回答 2

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;
}
于 2013-08-20T01:29:28.227 回答
0

你可以返回一个对象的数组[#properties, #methods, #properties that are not methods],或者只返回你想要的索引 -

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];
}
于 2013-08-20T01:36:23.677 回答