【发布时间】:2019-07-03 18:49:18
【问题描述】:
有一个创建容器的类。我使用它两次来创建 2 个容器,但我只想使用它一次(并且仍然创建 2 个容器)。当我将new Container() 放入类方法时,会出现无限循环(很明显)。如何让班级成为另一个(相同的)班级?
我敢打赌这是可能的。如果是这样,是否有可能将settings 传递给第二类,但 NOT 在参数中?也许我可以在二等舱使用另一种头等舱方法,但使用头等舱的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');
【问题讨论】:
-
第二个容器是第一个容器的属性可以吗?您计划如何访问第二个容器?另外,第一个容器如何知道将哪些参数传递给第二个容器?请提供更多详细信息/示例。
-
让我们试试这个属性。我举了一个例子,其中一个在另一个内部(
inner-container在container)内部,但它也可以是第二个附加到正文。没关系,它可能工作方式相同。我只需要传递@987654330 @. -
options是指settings吗?因为我在您发布的代码中的任何地方都看不到任何options。同样在您的示例中,您将$('.container')和'inner-container'作为参数传递给第二个容器。外部容器如何知道将它们传递给内部容器? -
是的,我的意思是
settings,对不起。正如我告诉你的,传递的参数只是示例。您可以在每次运行类时使用body。第二个参数是示例元素类。每次运行一个班级意味着new className(arguments)对吗?因此,在我的示例中,有传递参数,没有任何特殊参数。我不明白你的观点。 -
我猜我错过了什么,但看起来@guest271314 想出了一些东西,所以一切都很好:)
标签: javascript jquery ecmascript-6 es6-class