【问题标题】:How many ways are there to see all properties that you manually add to the function? JavaScript. JS有多少种方法可以查看您手动添加到函数中的所有属性? JavaScript。 JS
【发布时间】:2018-03-24 09:30:52
【问题描述】:
在 JavaScript 中,函数是一等对象,这意味着您可以像对待任何对象一样对待它们,在这种情况下,您只是为函数对象添加一个属性。
好的,让我们为函数添加一些属性。
function a() {
a.firstProp = "I'm 1st - property";
}
a.seccondProp = "I'm 2st - property";
function b() {
a();
}
b(); // initialize 1st property (firstProp) for `function a`;
console.log( Object.getOwnPropertyNames(b) );
console.log( Object.getOwnPropertyNames(a) );
如何在 Chrome DevTools 中看到我在代码示例中添加到函数中的键值对?
【问题讨论】:
标签:
javascript
function
properties
key-value
keyvaluepair
【解决方案1】:
Console.log( Object.keys(a) );
【解决方案2】:
您可以使用Object.assign,它将自己的可枚举属性复制到一个空对象并查看。
或使用Object.entries。
function a() {
a.firstProp = "I'm 1st - property";
}
a.seccondProp = "I'm 2st - property";
function b() {
a();
}
b(); // initialize 1st prop;
console.log(Object.assign({}, a));
console.log(Object.entries(a));
【解决方案3】:
您正在添加可枚举属性firstProp 和secondProp。要获取此类属性,您通常会使用Object.keys 方法:
function a() {
a.firstProp = "I'm 1st - property";
}
a()
a.seccondProp = "I'm 2st - property";
console.log(Object.keys(a))
【解决方案4】:
其他方法更短更优越,但您可能也对 for in 循环感兴趣。对于 ALL 的 in 循环,属性如下:
function foo (){}
foo.bar = 'test';
foo.baz = 123;
for(let i in foo) {
console.log(i);
}
console.log('------------');
for(let i of foo) {
console.log(i);
}
还要注意 for in 循环遍历对象的所有属性。如果对象是可迭代的(例如数组),for of 循环只会在对象上循环,这就是为什么它会产生一个数组。
希望对您有所帮助。
【解决方案5】:
你可以使用:
console.dir(a);
console.dir(b);
您将在控制台中看到以下响应:
希望对你有帮助