避免重构论证中的重复

时间:2016-01-11 01:39:09

标签: javascript ecmascript-6 destructuring

我有一个函数{ Value: "123", Neg: false, Exp: 3 } ,它返回一个类似于:

的对象
class MyClass {
    constructor(val) {
        {
          Value: this.Value
          Neg: this.Neg
          Exp: this.Exp
        } = ValidateInteger(val);
    }
}

我还有一个调用此函数的类:

this

正如您所看到的,this.{Value, Neg, Exp} = ValidateInteger(val); 已经有了相当多的重复。

我的问题是有一些更好的语法来执行此操作,例如:

<?php
global $wpdb;
$keyword ="apple";
$keyword = $wpdb->esc_like( $keyword );
$keyword = '%' . $keyword . '%';    
$sql = $wpdb->get_results($wpdb->prepare("SELECT id FROM mytable WHERE keyword LIKE %s"),$keyword);

print_r($sql);
?>

肯定应该有更好的语法。

1 个答案:

答案 0 :(得分:5)

我想你想要Object.assign。它可用于将可枚举属性的值从某些对象复制到另一个对象。

Object.assign(this, ValidateInteger(val));

var ValidateInteger = val => ({
  Value: "123",
  Neg: false,
  Exp: 3
});
class MyClass {
  constructor(val) {
    Object.assign(this, ValidateInteger(val));
  }
}
document.write('<pre>' + JSON.stringify(
  new MyClass() // MyClass { Value: "123", Neg: false, Exp: 3 }
, null, 2) + '</pre>');