Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ES2015中设置`this.[variable value]`_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 在ES2015中设置`this.[variable value]`

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

如何使用变量的值设置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[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。