通过构造函数实例化时添加额外属性的Javascript语法

Javascript syntax for adding extra properties while instantiating via constructor

本文关键字:属性 Javascript 语法 添加 构造函数 实例化      更新时间:2023-09-26

我正在用一堆本地实例化的javascript对象填充数组。对象是通过构造函数创建的。是否有一种方法来添加额外的属性对象,而不扩展构造函数,以包括所有可能的输入属性?

var item = function(name, id) {
    this.name = name;
    this.id = id;
    this.sharedMethod = function() { 
        // do stuff 
    }
}

var someArray = [
    new item("one", 1) {house: "blue", car: "new"},
    new item("two", 2) {pet: "dog"},
    new item("three", 3),
    new item("four", 4) {potatoChips: "yes", random: "sure is"}
];

我知道上面的someArray例子中的大括号是非法的。虽然,我不确定正确的方式去做这个方法。是否有一些特殊的语法来实现这一点,保留构造函数的使用(对于共享函数),但不涉及必须将每个项存储在var中,然后手动将它们推入数组。我还希望避免必须扩展构造函数以包含大量不同的属性。

我试着搜索了一段时间,但似乎找不到合适的搜索词来找到答案。

您可以简单地使用单个变量来存储对象:

var item = function(name, props) {
    this.name = name;
    this.props = props;
    this.sharedMethod = function() { 
        // do stuff 
    }
}

然后简单地传递一个带有几个属性的对象:

new item("one", {"house": "blue", "car": "new"});

您也可以直接将它们设置为属性,而不是通过props.[property]访问它们。通过循环遍历than对象并将它们设置为属性,如下所示:

var item = function(name, props) {
    this.name = name;
    for(prop in props) 
        this[prop] = prop;  
    this.sharedMethod = function() { 
        // do stuff 
    }
}