如何从javascript中的变量创建对象属性?

时间:2018-08-03 07:55:52

标签: javascript javascript-objects

我想做这样的事情,

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],但是得到了相同的结果。

1 个答案:

答案 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)