答案必须明显,但我没有看到它
这是我的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不是函数 ..但它是......
谢谢
答案 0 :(得分:15)
isComponentAvailable
没有附加到您的对象(即不是它的属性),它只是被您的函数包围;这使它变得私密。
您可以在前面添加this
以使其成为pulbic
this.isComponentAvailable = function() {
答案 1 :(得分:2)
isComponentAvailable
是一个私人功能。您需要将其公开,方法是将其添加到this
,如下所示:
var Authentification = function() {
this.jeton = "",
this.componentAvailable = false,
Authentification.ACCESS_MASTER = "http://localhost:1923";
this.isComponentAvailable = function() {
...
};
};
答案 2 :(得分:2)
另一种看待它的方法是:
var Authentification = function() {
// class data
// ...
};
Authentification.prototype = { // json object containing methods
isComponentAvailable: function(){
// returns a value
}
};
var auth = new Authentification();
alert(auth.isComponentAvailable());
答案 3 :(得分:2)
isComponentAvailable实际附加到窗口对象。