有多少种方法可以查看手动添加到函数中的所有属性? JavaScript的。 JS

问题描述 投票:6回答:5

在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
5个回答
4
投票
  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));

1
投票

您正在添加可枚举属性firstPropsecondProp。要获得这些属性,通常使用Object.keys方法:

function a() {
  a.firstProp = "I'm 1st - property";
}

a()

a.seccondProp = "I'm 2st - property";

console.log(Object.keys(a))

1
投票

其他方式更短更优越,但您可能也对for循环感兴趣。对于所有属性的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循环仅在对象上循环,这就是为什么这会产生一个数组。

希望你觉得这很有帮助。


1
投票

您可以使用:

console.dir(a);
console.dir(b);

您将在控制台中获得此响应:enter image description here

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.