开发者问题收集

javascript 中的类方法不是函数

2013-04-17
54939

答案肯定是显而易见的,但我没有看到

这是我的 javascript 类:

var Authentification = function() {
        this.jeton = "",
        this.componentAvailable = false,
        Authentification.ACCESS_MASTER = "http://localhost:1923",

        isComponentAvailable = function() {
            var alea = 100000*(Math.random());

            $.ajax({
               url:  Authentification.ACCESS_MASTER + "/testcomposant?" + alea,
               type: "POST",
               success: function(data) {
                   echo(data);
               },
               error: function(message, status, errorThrown) {
                    alert(status);
                    alert(errorThrown);
               }
            });
            
            return true;
        };
    };

然后我实例化

var auth = new Authentification();

alert(Authentification.ACCESS_MASTER);    
alert(auth.componentAvailable);
alert(auth.isComponentAvailable());

除了最后一种方法,我可以访问所有方法,它在 firebug 中显示:

auth.isComponentAvailable is not a function

.. 但是它是..

3个回答

isComponentAvailable 未附加到您的对象(即不是对象的属性),它只是包含在您的函数中;这使它成为私有的。

您可以在其前面加上 this 以使其成为公共的

this.isComponentAvailable = function() {

dm03514
2013-04-17

isComponentAvailable 实际上附加在窗口对象上。

Stone Shi
2013-04-17

isComponentAvailable 是一个私有函数。您需要将其添加到 this 中以使其成为公共函数,如下所示:

var Authentification = function() {
    this.jeton = "",
    this.componentAvailable = false,
    Authentification.ACCESS_MASTER = "http://localhost:1923";

    this.isComponentAvailable = function() {
        ...
    };
};
cfs
2013-04-17