'is not a function' 在同一个构造函数中调用一个方法 (JS)
'is not a function' on calling an method within the same constructor function (JS)
我想在同一个方法中调用一个方法 class。
function Dialog() {
this.close = function() {
//code
};
this.dialog = document.createElement("div");
this.dialog.onclick = function() {
this.close();
}
document.body.appendChild(this.dialog);
}
var test = new Dialog();
我搜索了答案,但没有任何帮助:当我单击 div.
时,我的浏览器控制台中仍然显示 TypeError: this.close is not a function
当您使用 function() { ... }
时,它会在函数内部更改 this
的内容。您需要将函数绑定到 this
或使用箭头函数 () => { ... }
.
使用绑定:
var handleClick = function() {
this.close();
};
this.dialog.onclick = handleClick.bind(this)
使用箭头函数:
this.dialog.onclick = () => {
this.close();
}
尝试使用 close(){} 而不是 this.close = function(){}。请参阅下面的示例。
function Dialog() {
close(){
//code
};
this.dialog = document.createElement("div");
this.dialog.onclick = function() {
this.close();
}
document.body.appendChild(this.dialog);
}
var test = new Dialog();
我想在同一个方法中调用一个方法 class。
function Dialog() {
this.close = function() {
//code
};
this.dialog = document.createElement("div");
this.dialog.onclick = function() {
this.close();
}
document.body.appendChild(this.dialog);
}
var test = new Dialog();
我搜索了答案,但没有任何帮助:当我单击 div.
时,我的浏览器控制台中仍然显示TypeError: this.close is not a function
当您使用 function() { ... }
时,它会在函数内部更改 this
的内容。您需要将函数绑定到 this
或使用箭头函数 () => { ... }
.
使用绑定:
var handleClick = function() {
this.close();
};
this.dialog.onclick = handleClick.bind(this)
使用箭头函数:
this.dialog.onclick = () => {
this.close();
}
尝试使用 close(){} 而不是 this.close = function(){}。请参阅下面的示例。
function Dialog() {
close(){
//code
};
this.dialog = document.createElement("div");
this.dialog.onclick = function() {
this.close();
}
document.body.appendChild(this.dialog);
}
var test = new Dialog();