【发布时间】:2016-08-05 12:27:25
【问题描述】:
标题可能有点混乱,但我有以下问题:
var propertyList = {
type1: {property1: 1},
type2: {property1: 2}
}
class Test {
constructor(typ){
this.property1 = propertyList.typ.property1;
}
}
var a = new Test('type1');
代码非常不言自明-我想设置a 对象的property1 属性,而不是通过在构造函数中手动传递值,而是通过将其键之一传递给propertyList 对象文字来选择值之一构造函数。我希望当我在上面运行代码时,将创建对象a,并将property1 值设置为1。但是,我得到了Uncaught TypeError: Cannot read property 'property1' of undefined 错误。当我将console.log(typ) 放入构造函数的第一行时,它正确显示传递给构造函数的值是type1。为什么上面的代码不起作用并且可以以某种方式修复?
【问题讨论】:
-
你需要使用这个语法:
propertyList[typ].property1否则它会在propertyList对象中寻找属性名typ(并且这个属性不存在)
标签: javascript class constructor ecmascript-6 object-literal