Javascript 在ES2015中设置`this.[variable value]`
如何使用变量的值设置ES2015中类的属性 考虑以下代码:Javascript 在ES2015中设置`this.[variable value]`,javascript,ecmascript-6,Javascript,Ecmascript 6,如何使用变量的值设置ES2015中类的属性 考虑以下代码: class Test { constructor() { this.name = ""; this.url = ""; } //Set the options for class setOptions(options) { for (option in options) { this.option = options[option]; //Option 1 this[op
class Test {
constructor() {
this.name = "";
this.url = "";
}
//Set the options for class
setOptions(options) {
for (option in options) {
this.option = options[option]; //Option 1
this[option] = options[option]; //Option 2
}
}
}
const test = new Test();
test.setOptions({name: 'Test', url: 'www.stackoverflow.com'});
我知道选项1不应该起作用,但鉴于选项2也不起作用,我不确定如何以编程方式设置类属性
为了明确起见,我想在类中设置'name'和'url',而不是名为option的属性。错误在
语法中的for<代码>选项未定义,您必须使用for(选项中的var选项)
或for(选项中的let选项)
记录test
之后,使用选项2,输出为:
Test{name:“Test”,url:“www.stackoverflow.com”}
类测试{
构造函数(){
this.name=“”;
this.url=“”;
}
//设置类的选项
设置选项(选项){
for(让选项进入选项){
此[选项]=选项[选项];//选项2
}
}
}
常量测试=新测试();
setOptions({name:'test',url:'www.stackoverflow.com'});
控制台日志(测试)代码>ES6类处于严格模式,即使没有“使用严格”
严格模式禁止隐式全局变量
选项
变量未在任何位置声明
因此,试图给它赋值将抛出一个ReferenceError
难以置信。。我在实际代码中已经修复了这个问题,但我认为这不会有什么大不了的,因为它只是一个“全局”JS变量,所以在添加后没有重新测试。。一旦stackoverflow允许我或可能只是使用Object.assign()
并让它复制所有属性,我会选择您的作为最佳答案。+1表示Object.assign
,但是请注意,如果对象上有任何其他命名属性,并且对象以任何相同的属性名传入,则这可能会造成麻烦。一旦修复了option
的变量声明,它就可以正常工作。你为什么认为它不起作用?你得到了什么产出?不工作怎么办?看看控制台。您可能会在变量选项上看到ReferenceError
。这将为您提供追查错误所需的所有线索。这与ES2015无关。这是基本的JS。