我正试图遍历这些数据,为每个数据赋予价值。
const key = Object.keys(response.data)
key.forEach((index,element) => {
// let query = "this."+element
this.element = response.data.element
});
输出应为
this.name = response.data.name
this.password= response.data.password
...
答案 0 :(得分:3)
您的代码有几个问题,都与访问this
无关。
首先,您的参数在回调中的顺序错误。第一个参数是元素,第二个参数是索引(也许您已经习惯使用jQuery了-它在.each()
和.map()
方法中使用相反的顺序)。
第二,您没有正确使用元素。 .element
意味着访问字面名称为element
的属性,它不使用变量element
的值。您必须使用[element]
动态访问属性;参见Dynamically access object property using variable
const key = Object.keys(response.data)
key.forEach((element) => {
this[element] = response.data[element]
});
class MyClass {
copyProps(response) {
const key = Object.keys(response.data)
key.forEach((element) => {
this[element] = response.data[element]
});
}
}
obj = new MyClass;
obj.copyProps({
data: {
name: "MyName",
age: 10
}
});
console.log(obj);
您还可以使用Object.assign()
复制属性:
Object.assign(this, response.data);