有是创建容器类。我用它两次,以创建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');
您可以定义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;
}
}