我需要動態定義類,所以在我的ES6代碼編寫的代碼生成器:使用ES6模板文字傳播語法
function makeClass(className, baseClass = _DefaultBaseClass, ...args) {
return (
eval(`
class ${className} extends ${baseClass} {
constructor(${...args}) {
super(${...args})
}
}
`)
)
}
「_DefaultBaseClass」是用來簡化上述發生器功能邏輯的空類:
class _DefaultBaseClass() {
constructor() {}
}
除了傳播運算符,一切正常工作的發生器代碼。在此示例中,展開運算符本身在我的項目之外可以在模板文字之外正常工作。
我正在使用以下webpack Babel預設/插件:'react','es2015','stage-2','transform-runtime'。
爲什麼不直接降了'constructor'乾脆當它只是調用'super' - 默認構造函數做到了這一點無論如何 – Bergi
[ **'...'不是一個運算符**](http://stackoverflow.com/questions/37151966/what-is-spreadelement-in-ecmascript-documentation-is-it-the-same-as-spread -oper/37152508#37152508)。它是數組文字,函數定義,函數調用和數組解構賦值語法的一部分。這不是一個獨立的事情。 '......'不是模板文字的一部分。 –
@FelixKling感謝您的信息;很有幫助。 – Ethan