我有一个需要多次调用的函数,这个函数会在我的html中附加元素:
class MyClass {
somefunct(elements) {
const father = $("#father").find("#other-element");
for (let element of elements) {
father.append(element);
}
}
}
我想避免在每次通话中初始化父亲。怎么样?
我是怎么做的:
somefunct(elements) {
const father = $("#father").find("#other-element");
this.somefunc = (elements) => {
for (let element of elements) {
father.append(element);
}
}
}
这会有效,但我不知道这是不好的做法,还是有更好的方法。
谢谢。
答案 0 :(得分:1)
最好的方法是将父声明为类的属性,并在构造函数中获取一次,如下所示:
class MyClass {
constructor() {
this._father = $("#father").find("#other-element");
}
somefunct(elements) {
for (let element of elements) {
this._father.append(element);
}
}
}
但在这种情况下,_father
成员将是傀儡。如果要将其隐藏在闭包中,则必须在定义类方法时使用 IIFE (立即调用函数表达式),但由于ES类文字不允许IIFE,因此您必须使用这样的旧原型:
class MyClass {
// ... other methods
}
MyClass.prototype.somefunct = (function() {
const father = $("#father").find("#other-element");
return function(elements) {
for (let element of elements) {
father.append(element);
}
}
}());
答案 1 :(得分:0)
如果您使用ES6课程。这可以这样做:
class MyClass {
constructor(options){
this.$father = options.el;
}
somefunct(elements) {
for (let element of elements) {
this.$father.append(element);
}
}
}
let classInstance = new MyClass({
el: $("#father").find("#other-element")
});
classInstance.somefunct(elements);