在javascript中使用另一个类中的函数

时间:2017-02-23 14:31:49

标签: javascript html function class

所以我在这里有这个代码,我想在另一个类中使用验证结果(false),我该怎么做?我无法访问它

class Login extends Base {

    constructor(propertyValues) {
        super(propertyValues);
    }

    validate {
        var usernamed = document.getElementById("username").value;
        var passworded = document.getElementById("password").value;
        if (usernamed == "abc" && passworded == "123") {
            alert("Login successfully");
            window.location = "http://localhost:3000/tasksMenu"; // Redirecting to other page.
            return false;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您可以进行静态验证,因为它不会对课程做任何事情。 this并且似​​乎非常漂亮,静止。其次,我不会将重定向逻辑放在验证函数中,而是处理稍后调用验证的函数中的重定向。所以只需让validate()返回true或false,然后从你调用的地方处理其余部分:

class Login extends Base {

    constructor(propertyValues) {
        super(propertyValues);
    }

    static validate() {
        let usernamed = document.getElementById("username").value;
        let passworded = document.getElementById("password").value;
        return usernamed == "abc" && passworded == "123";
    }
}

class Foo {
    bar() {
        if (Login.validate()) {
            alert("success");
            // redirect to your success page
        } else {
            alert("wrong credentials");
            // redirect to your error page
        }
    }
}

new Foo().bar();

旁注:

当您使用html和javascript对此进行标记时,我假设您正在编写前端登录系统?如果是这样,请不要这样做!使用您网站的每个人都可以阅读前端的所有内容;这包括您检查的密码和用户名。 在后端登录 !!!

答案 1 :(得分:0)

首先,您的类中存在语法错误。您应该将验证函数定义为:

validate() {
//...
}

如果在此类之后加载此函数,则可以在另一个类中访问此函数。例如,您可以像下面这样访问它:

class other {
    access() {
        var login = new Login("pass your property values");
        console.log(login.validate());
    }
}
new other().access();