我想做这样的事情,
function MyObject(args){
keys=Object.getOwnPropertyNames(args)
keys.forEach(function(key){
this[key]=args[key]
})
}
此后,我尝试创建一个对象,但是未设置其属性。
n=new MyObject({title:'x',age:19})
console.log(n.title)
OutPut:未定义!
所以有人能告诉我我做错了什么吗...我什至尝试用this[key]
代替MyObject[key]
,但是得到了相同的结果。
答案 0 :(得分:4)
在forEach中,this
的值不是您正在创建的MyObject
的实例。您可以使用箭头功能,也可以将所需的this
存储在上部范围中:
function MyObject(args){
var self = this;
keys=Object.getOwnPropertyNames(args)
keys.forEach(function(key){
self[key]=args[key]
})
}
n=new MyObject({title:'x',age:19})
console.dir(n)
console.log(n.title)
function MyObject(args){
keys=Object.getOwnPropertyNames(args)
keys.forEach((key) => {
this[key]=args[key]
})
}
n=new MyObject({title:'x',age:19})
console.dir(n)
console.log(n.title)