标题可能有点令人困惑,但我有以下问题:
var propertyList = {
type1: {property1: 1},
type2: {property1: 2}
}
class Test {
constructor(typ){
this.property1 = propertyList.typ.property1;
}
}
var a = new Test('type1');
代码非常明显 - 我想设置property1
对象的a
属性,而不是在构造函数中手动传递值,而是从propertyList
对象文字中选择一个值将其中一个键传递给构造函数。我希望当我运行上面的代码时,将创建对象a
,并将property1
值设置为1.但是我没有得到Uncaught TypeError: Cannot read property 'property1' of undefined
错误。当我在构造函数的第一行中调用console.log(typ)时,它正确地显示传递给构造函数的值是type1
。为什么上面的代码不起作用,可以以某种方式修复它?
答案 0 :(得分:0)
你的语法有点偏。你不能在你的作业中使用传递的参数typ
,因为代码实际上会在typ
中寻找属性propertyList
(如propertyList { typ: }
)。要使用传入的参数,请将其包装在括号中:
this.property1 = propertyList[typ].property1;