Объект по умолчанию для последнего определенного объекта - PullRequest
0 голосов
/ 18 декабря 2018

Итак, у меня есть конструктор объекта, но когда я пытаюсь вставить объект, в массиве cmndlist всегда есть x количество последнего определенного объекта.(В основном все они заканчиваются одинаково)

function command(name, category, help, callback) {
    this.name = name;
    this.help = help;
    this.use = callback;

    cmndlist[category].push(this);
}; 

Вот код, в котором я также определяю объекты.

command("foo",0,"foo", function(message){
    //code
});

command("bar",1,"bar", function (message){
    //code
}); 

command("foobar",1,"foobar", function (message){
    //code
}); 

Так что в этом примере все объекты в массиве будут иметьте же свойства, что и foobar.

Я не хочу этого, я хочу, чтобы в нем были все три объекта.

1 Ответ

0 голосов
/ 18 декабря 2018

Чтобы получить новый объект, нам нужно добавить «новый» перед нашим вызовом команды.В противном случае мы ссылаемся на один и тот же экземпляр объекта каждый раз.Посмотрите здесь описание конструкции объекта в JavaScript.https://www.w3schools.com/js/js_object_constructors.asp

var cmndlist = [];

function command(name, category, help, callback) {
    this.name = name;
    this.help = help;
    this.use = callback;

    if(cmndlist.hasOwnProperty(category) == false) cmndlist[category] = [];

    cmndlist[category].push(this);
}; 


new command("foo",0,"foo", function(message){
    //code
});

new command("bar",1,"bar", function (message){
    //code
}); 

new command("foobar",1,"foobar", function (message){
    //code
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...