我在对象中有以下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:由于函数对象的长度返回参数的#,有没有其他方法可以在JS中划分属性和函数?
对于函数对象,length 属性表示其形式参数(函数期望的参数)的总数。例如:
var foo = function(a) {};
foo.length; // 1
请注意Function.length
和arguments.length
之间的区别:
var bar = function(a, b) {
console.log(bar.length);
console.log(arguments.length);
};
bar(42);
这将在第一行记录2
(因为形式参数的数量是给定函数的常量值),但在第二行中1
(因为bar
仅在此处使用单个参数调用)。
由于函数对象的长度返回参数的 #,因此 还有另一种方法可以在JS中划分属性和函数吗?
当然:只需检查属性的类型:
if (typeof this[key] === 'function') { ... }