对象默认为最后定义的对象

时间:2018-12-17 22:02:45

标签: javascript object constructor

因此,我有一个对象构造函数,但是当我尝试将一个对象放入其中时,数组<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302] RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> 始终具有定义的最后一个对象的x数量。 (基本上它们最终都一样)

cmndlist

这也是我定义对象的代码。

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 }); 相同的属性。

我不想要,我希望它具有所有三个对象。

1 个答案:

答案 0 :(得分:1)

要获取新对象,我们需要在调用命令之前添加“ new”。否则,我们每次都引用相同的对象实例。 在此处查看有关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
});