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

Spi*_*886 7 javascript ecmascript-6 reactjs

我正在阅读Facebook的固定数据表的源代码,我发现了这一点

var {left, ...props} = this.props;
Run Code Online (Sandbox Code Playgroud)

这意味着什么?这是一个新的语义?我很困惑

Bri*_*and 16

这是为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);
Run Code Online (Sandbox Code Playgroud)

这超过了几个字符剃掉了:-)