Страницы

Поиск по вопросам

вторник, 31 марта 2020 г.

Как создать конструктор внутри объекта?

#javascript


Существует объект который содержит объекты . В этом объекте есть метод который является
конструктором при вызове которого просто добавляет еще объект. 

var obj = {
            list1:{petName:'Gyffy', 
                    petOwner:'Peter',
                    date: '2016-05-03',
                    time: '14:23',
                    note:'sfdsfsdfdsf'},
            list2:{petName:'Catty', 
                    petOwner:'Oleg',
                    date: '2017-05-03',
                    time: '16:23',
                    note:'xcxzcxcxc'},
            addObj: function(petName,petOwner,date,time,note){
                    this.petName = petName,
                    this.petOwner = petOwner,
                    this.date = date,
                    this.time = time,
                    this.note = note
            }       
        }
        obj.addObj('Kitty','Max','2014-06-03','14:34','bla bla');


В результате этого "кода") создаются свойства текущего объекта.

{list1: {…}, list2: {…}, addObj: ƒ, petName: "Kitty", petOwner: "Max", …}
addObj
:
ƒ (petName,petOwner,date,time,note)
date
:
"2014-06-03"
list1
:
{petName: "Gyffy", petOwner: "Peter", date: "2016-05-03", time: "14:23", note: "sfdsfsdfdsf"}
list2
:
{petName: "Catty", petOwner: "Oleg", date: "2017-05-03", time: "16:23", note: "xcxzcxcxc"}
list3
:
{petName: "dsfdsf", petOwner: "Olga", date: "2018-12-06", time: "13:23", note: "dsfsd"}
note
:
"bla bla"
petName
:
"Kitty"
petOwner
:
"Max"
time
:
"14:34"
__proto__
:
Object


Как мне реализовать вызов конструктора и создать новый объект в obj
    


Ответы

Ответ 1



var obj = { list1: { petName: 'Gyffy', petOwner: 'Peter', date: '2016-05-03', time: '14:23', note: 'sfdsfsdfdsf' }, list2: { petName: 'Catty', petOwner: 'Oleg', date: '2017-05-03', time: '16:23', note: 'xcxzcxcxc' }, addObj: function(petName, petOwner, date, time, note) { for (var i = 1; ; i++) { if (!this["list" + i]) { this["list" + i] = { petName: petName, petOwner: petOwner, date: date, time: time, note: note }; break; } } } } obj.addObj('Kitty', 'Max', '2014-06-03', '14:34', 'bla bla'); console.log(obj);

Ответ 2



Если вы хотите дёрнуть функцию в качестве конструктора, то вам нужно вызывать её с new var obj = { list1:{petName:'Gyffy', petOwner:'Peter', date: '2016-05-03', time: '14:23', note:'sfdsfsdfdsf'}, list2:{petName:'Catty', petOwner:'Oleg', date: '2017-05-03', time: '16:23', note:'xcxzcxcxc'}, addObj: function(petName,petOwner,date,time,note){ this.petName = petName, this.petOwner = petOwner, this.date = date, this.time = time, this.note = note } } obj.list3 = new obj.addObj('Kitty','Max','2014-06-03','14:34','bla bla'); console.log(obj);

Комментариев нет:

Отправить комментарий