我只能看到索引和值。不显示其他属性,如length或callee。如何从console.log()隐藏属性?以及如何查看所有属性?
例如:
function test(){
console.log(arguments);
console.log(arguments.length);
}
test(1,2,3,4,5);
输出为{ '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }
和5
实际上参数中有length
属性,但我无法在console.log(arguments)
中看到。
答案 0 :(得分:2)
因为arguments.length
属性是不可枚举的。
您可以在对象上定义属性,并将其enumerable
属性设置为false
,就像这样
var obj = {};
Object.defineProperty(obj, "name", {
"value": "a",
enumerable: false
});
console.log(obj);
// {}
您可以使用Object.prototype.propertyIsEnumerable
功能检查相同内容,例如
function testFunction() {
console.log(arguments.propertyIsEnumerable("length"));
}
testFunction();
将打印false
,因为length
特殊对象的arguments
属性不可枚举。
如果您想查看所有属性,请使用此question中提到的答案。基本上, Object.getOwnPropertyNames
甚至可以枚举不可枚举的属性。所以,你可以像这样使用
function testFunction() {
Object.getOwnPropertyNames(arguments).forEach(function (currentProperty) {
console.log(currentProperty, arguments[currentProperty]);
});
}
testFunction();
这将打印length
和callee
属性。