JavaScript: var {left, ...props} = this.props;

JavaScript: var {left, ...props} = this.props;

我正在阅读 Facebook 的固定数据的源代码-table,我发现 this

var {left, ...props} = this.props;

这是什么意思?这是一个新的语义吗?我很困惑o.O

它是一种特殊形式的解构赋值 proposed for ES7(并且急切地在 jsx 工具和 Babel 中实现)。它创建了两个变量:leftprops.

left 的值为 this.props.left

props 是一个对象,具有 this.props 的所有其他属性(不包括 left)。

如果你在没有解构的情况下编写它,它看起来像这样:

var left = this.props.left;
var props = {};

Object.keys(this.props).forEach(function(key, index){
    if (key !== 'left') {
        props[key] = this.props[key];
    }
}, this);

这比削掉的字符还多 :-)