实例化时绑定其他属性

时间:2019-12-28 20:01:12

标签: javascript class bind

让我说一堂课。

class Room {
    constructor() {
        this.width = 100
        this.height = 200 
    }
}

我想在实例化时绑定其他属性。

new Room.bind({ capacity: 5 })()

这可能吗? (无需通过参数完成操作)

1 个答案:

答案 0 :(得分:0)

否,这是不可能的,因为new X返回一个对象而不是一个函数。

Function#bind仅适用于函数并返回一个函数。

要使您的代码运行,您可以分离Item并使用实例将其添加到item_list

class Room {
    constructor() {
        this.item_list = [];
        this.add = {
            item: (item) => this.item_list.push(new Item(item))
        };
    }
}

class Item {
    constructor(name) {
        this.name = name;
    }
}

let room = new Room();
room.add.item('bed');

console.log(room);