Как я могу создать свойство объектов из переменных в JavaScript?

1

я хочу сделать что-то подобное,

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)

Выход: не определено !!

так что может кто-нибудь сказать мне, что я делаю неправильно... я даже попытался заменить this[key] на MyObject[key], но получил тот же результат..

  • 1
    Вместо этого используйте функцию стрелки, иначе ваш this будет ссылаться на неправильный объект
  • 0
    спасибо, сработало, сэр
Теги:
javascript-objects

1 ответ

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)
  • 0
    может быть, вы должны добавить пример с функцией стрелки
  • 0
    Это сделано сейчас, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню