【问题标题】: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));

      【讨论】:

      • 或者直接使用Object.keys
      • 这是唯一注意到问题中键值对短语的答案。
      【解决方案3】:

      您正在添加可枚举属性firstPropsecondProp。要获取此类属性,您通常会使用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);
          

          您将在控制台中看到以下响应:

          希望对你有帮助

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-01-09
            • 1970-01-01
            • 1970-01-01
            • 2012-11-04
            • 1970-01-01
            • 2015-11-29
            • 1970-01-01
            相关资源
            最近更新 更多