为什么在枚举属性/函数时key.length不准确

时间:2013-10-23 07:52:05

标签: javascript

我在对象中有以下toString方法:

/**
         * @method toString
         * @public
         */
        toString: function () {
            var toString = "toString: ";
            for (key in this) {
                if (this.hasOwnProperty(key))   {
                    console.log(key);
                    console.log(this[key].length);
                    if(this[key].length < 50)   {
                toString +=key + ": " + this[key] + " \t ";
                    }
                }
            }
            return toString;
        }

为什么我的功能(人体超过50个字符)返回长度为2/3?

编辑:我正在尝试获取属性值的长度,以便在属性和函数中划分它们。

edit2:由于函数对象的长度返回了para的数量,是否还有另一种方法来划分js中的属性和函数?

1 个答案:

答案 0 :(得分:3)

对于Function对象,length属性表示其形式参数的总数(函数预期的参数)。例如:

var foo = function(a) {};
foo.length; // 1

请注意Function.lengtharguments.length

之间的差异
var bar = function(a, b) { 
  console.log(bar.length); 
  console.log(arguments.length); 
};
bar(42);

这将在第一行中记录2(因为形式参数的数量是给定函数的常量值),但第二行中的1barif (typeof this[key] === 'function') { ... } 仅在此处使用单个参数调用。)


  

因为函数对象的长度返回params的数量,所以   还有另一种方法来划分js中的属性和函数吗?

当然:只需查看酒店的类型:

{{1}}