ES6 备注

对象的扩展

属性简写和方法简写

  1. var foo = 'bar';
  2. var baz = {foo};
  3. baz //{foo:"bar"}
  4. //等同于
  5. var baz = {foo:foo};
  6. //方法简写
  7. var o = {
  8. method() {
  9. return "hello!"
  10. }
  11. }

Object.assign()

不支持深度拷贝 可以使用 lodash/merge 支持深度拷贝

  1. var test1 = {
  2. name:11,
  3. obj:{
  4. 1:{
  5. aaa:111
  6. },
  7. 2:{
  8. bbb:222
  9. }
  10. }
  11. }
  12. var test2 ={
  13. obj:{
  14. 2:{
  15. ccc:4444
  16. }
  17. }
  18. }
  19. console.info(Object.assign({}, test1, test2));
  20. //输出:
  21. {
  22. name:11,
  23. obj:{
  24. 2:{
  25. ccc:444
  26. }
  27. }
  28. }

函数

函数的rest参数

ES6引入了rest参数(形式: “…变量名”),用于获取函数的多余参数。这样就不需要使用arguments对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入其中。

  1. function add(...values){
  2. let sum = 0;
  3. for(var val of values){
  4. sum += val;
  5. }
  6. return sum;
  7. }

扩展运算符(延展操作符)(spread operator)

这个 … 操作符(也被叫做延展操作符 - spread operator)已经被 ES6 数组 支持。相关的还有 ES7 规范草案中的 Object 剩余和延展属性(Rest and Spread Properties)。我们利用了这些还在制定中标准中已经被支持的特性来使 JSX 拥有更优雅的语法。
注:React JSX 的新特性 - 延展属性 JSX支持spread operator

  1. var props = {};
  2. props.foo = x;
  3. props.bar = y;
  4. var component = <Component {...props} />;

传入对象的属性会被复制到组件内。
它能被多次使用,也可以和其它属性一起用。注意顺序很重要,后面的会覆盖掉前面的。

  1. var props = { foo: 'default' };
  2. var component = <Component {...props} foo={'override'} />;
  3. console.log(component.props.foo); // 'override'