【问题标题】:How to destructure from an object and keep the same object?如何从对象中解构并保留相同的对象?
【发布时间】:2020-04-04 18:40:50
【问题描述】:

我想给一个字段添加一个事件监听器,比如这个

field.addEventListener("keyup", (event) => {
  if (event.keyCode === 13) {
      event.preventDefault();
      // do something
  }
});

有没有一种干净的方法来保留event 并从其中解构keyCode,因为我需要两者?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你可以解构为对象,在参数列表中,对象并没有消失,但你可以从arguments object中拉出来。

    这并没有使代码更好......

    function perform({ baz }) {
        console.log(baz);
        console.log(arguments[0]);
    }
    
    var object = { foo: 'bar', baz: 42 };
    
    perform(object);

    【讨论】:

      【解决方案2】:

      您可以在新的 const 变量中解构对象。

      field.addEventListener("keyup", (event) => {
        const { keyCode } = event;
        if (keyCode === 13) {
            event.preventDefault();
            // do something
        }
      });
      

      【讨论】:

      • 应该是keyCode(大写c
      【解决方案3】:

      你可以这样,

      const use = (i, cb) => cb(i, i)
      
      use(doSomething(), (event, { keyCode }) => {
          // 
      });
      

      【讨论】:

        【解决方案4】:

        好吧,不幸的是,不,不是我想你的意思。你可以这样做:

        field.addEventListener("keyup", event => {
          // whatever you want to destructure
          const {keyCode} = event; 
          if (keyCode === 13) {
              event.preventDefault();
              // do something
          }
        });
        

        不过,这可能没什么用,因为我确定您想在事件处理程序的参数列表中进行解构。

        【讨论】:

        • 这不起作用,因为preventDefault() 的执行上下文需要是一个事件
        • 哦,好点。在我回答这些问题之前,我应该等到咖啡开始。 :-)
        猜你喜欢
        • 2015-07-04
        • 2011-03-23
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        • 2011-05-25
        • 1970-01-01
        • 2014-04-11
        相关资源
        最近更新 更多