如何将选项传递给类的一类?

问题描述 投票:0回答:1

有是创建容器类。我用它两次,以创建2个容器,但我想用它只有一次(和仍然创造2个容器)。当我把里面new Container()类的方法,会出现无限循环(什么是显而易见的)。如何使类再拍(下同)吗?

我敢打赌,这是可能的。如果是这样,有路过settings到第二级的可能性,但不是在一个参数?也许我可以在第二类中使用一流的另一种方法,但它使用this.options从头等舱?

为了把事情说清楚,用“一流”我所说的“第二课堂” Container类和首轮 - 第一内部创造了另一个Container class

https://jsfiddle.net/rqhwsv2p/5/

class Container {
    constructor(element, className, settings) {
        this.init(element, className, settings);
    }

    init(element, className, settings) {
        var template = '<div class=' + className + '></div>';
        var container = $(template);

        element.append(container);

        if (settings) {
            this.settings = settings;

            this.getSettings();
            console.log('settings:::::', this.settings);
        }
    }

    getSettings() {
        return this.settings;
    }
}

var body = $('body');
var settingsOuter = {enable: true, visible: true, color: true};

var outer = new Container(body, 'container', settingsOuter);
var inner = new Container($('.container'), 'inner-container');
javascript jquery ecmascript-6 es6-class
1个回答
-1
投票

您可以定义settings作为class constructor的默认参数

class Container {
    constructor(element, className, settings = {enable: true, visible: true, color: true}) {
        this.init(element, className, settings);
    }

    init(element, className, settings) {
        var template = '<div class=' + className + '></div>';
        var container = $(template);

        element.append(container);

        if (settings) {
            this.settings = settings;

            this.getSettings();
            console.log('settings:::::', this.settings);
        } else {
            this.settings = void 0;
        }
    }

    getSettings() {
        return this.settings;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.