我刚开始使用JS上的课程,并且在内部功能和内部功能方面遇到了麻烦。
class ficha {
constructor() {
let alumno;
this.alumno="Marga";
}
inicio() {
this.alumno="Norat";
}
verNombre() {
return this.alumno;
}
}
function programa() {
let obj=new ficha();
ficha.inicio();
document.getElementById("res").innerHTML=ficha.verNombre();
}
以前的代码会出错" ficha.inicio"和" ficha.verNombre"不是一个功能,我不知道为什么。以前我做了以下代码,虽然我还没有看到与第一个代码的区别,但是工作正常。 错误已修复,请参阅下面的第二个问题
class entradaDatos {
constructor() {
let nombre;
let pwd;
this.nombre="admin";
this.pwd="1234";
}
introduceDatos() {
let valorEntrada=document.formEntrada.txtInicial.value;
let valorPass=document.formEntrada.password.value;
if (this.compruebaNombre(valorEntrada)) this.nombre=valorEntrada;
else this.nombre="No válido";
//if (this.compruebaPassword(valorPass)) this.pwd=valorPass;
//else this.pwd="No válido";
}
compruebaNombre(valor) {
let flag=true;
if (valor==null || valor=="") flag=false;
return flag;
}
compruebaPassword(pass) {
let flag=true;
if (pass==null || pass=="" || pass!=this.pwd) flag=flase;
return flag;
}
verDatos() {
return this.nombre;
}
}
function programa() {
let obj=new entradaDatos();
obj.introduceDatos();
$("#res").html("<br>Con jQuery: "+obj.verDatos());
document.querySelector("#res2").innerHTML="Con JS: "+obj.verDatos();
}
我也会利用这篇文章来询问为什么如果我在这段代码上取消注释两行,它会阻止脚本做任何事情,技术上它与之前的if / else和其他var一样:
//if (this.compruebaPassword(valorPass)) this.pwd=valorPass;
//else this.pwd="No válido";
答案 0 :(得分:3)
调用对象实例上的方法,而不是&#34;类&#34;:
obj.inicio();
document.getElementById("res").innerHTML=obj.verNombre();
你的第二个例子是有效的,因为你正是这样做的,而第一个你在ficha
上调用方法。