我有一个函数可以在我的类中设置一个值并执行其他一些操作。我需要在类中和类外部运行此函数。
该函数名为state(val)
。据我所知,您不需要在名称前添加function
。
我只是得到一个错误说
状态未定义
这是我的代码
// Menu control object
class menuControl {
constructor(obj, children, items) {
this.children = children;
this.elm = obj;
this.state = 0;
}
state(val) {
this.state = val;
for(var index in controls) {
if (index !== not) {
addClass(controls[index].elm, 'disabled');
} else {
removeClass(controls[not].elm, 'disabled');
}
if (this.state === 0) {
removeClass(controls[index].elm, 'disabled');
}
}
}
toggle() {
// MENU ACTIVE
if (this.state === 0) {
for(var i in this.children) {
// Add required classes
if (this.children[i][1] === 1) {
addClass(this.children[i][0], 'toggled');
} else {
removeClass(this.children[i][0], 'toggled');
}
}
this.state(1); // Toggle the state
} else {
// MENU INACTIVE
for(var i in this.children) {
removeClass(this.children[i][0], 'toggled');
}
this.state(0); // Toggle the state
}
}
}
更新
// Menu control object
class menuControl {
constructor(obj, children, items) {
this.children = children;
this.elm = obj;
this.state = 0;
}
setState(val) {
this.state = val;
for(var index in controls) {
if (index !== not) {
addClass(controls[index].elm, 'disabled');
} else {
removeClass(controls[not].elm, 'disabled');
}
if (this.state === 0) {
removeClass(controls[index].elm, 'disabled');
}
}
}
toggle() {
// MENU ACTIVE
if (this.state === 0) {
for(var i in this.children) {
// Add required classes
if (this.children[i][1] === 1) {
addClass(this.children[i][0], 'toggled');
} else {
removeClass(this.children[i][0], 'toggled');
}
}
setState(1); // Toggle the state <--------- Get the error here
} else {
// MENU INACTIVE
for(var i in this.children) {
removeClass(this.children[i][0], 'toggled');
}
setState(0); // Toggle the state
}
}
}
答案 0 :(得分:2)
你要两次定义状态:
where
所以你需要给另一个名字中的一个。例如,您可以调用方法td
。使用动词作为方法名称也有助于将它们与属性区分开来。