2013-04-17 21 views
7

Câu trả lời phải rõ ràng nhưng tôi không nhìn thấy nóphương pháp Class trong javascript không phải là một chức năng

đây là lớp javascript của tôi:

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; 
     }; 
    }; 

sau đó tôi instanciate

var auth = new Authentification(); 

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

tôi có thể tiếp cận mọi thứ nhưng phương pháp cuối cùng, nó nói trong firebug:

auth.is ComponentAvailable không phải là một chức năng .. nhưng nó là ..

Cảm ơn bạn

Trả lời

11

isComponentAvailable không được gắn vào (tức là không phải là một tài sản của) đối tượng của bạn, nó chỉ được bao bọc bởi chức năng của bạn; mà làm cho nó riêng tư.

Bạn có thể thêm tiền tố nó với this để làm cho nó pulbic

this.isComponentAvailable = function() {

2

isComponentAvailable là một chức năng riêng. Bạn cần phải thực hiện công khai bằng cách thêm vào this như vậy:

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

    this.isComponentAvailable = function() { 
     ... 
    }; 
}; 
2

Một cách khác để nhìn vào nó là:

var Authentification = function() { 
    // class data 
    // ... 
}; 

Authentification.prototype = { // json object containing methods 
    isComponentAvailable: function(){ 
     // returns a value 
    } 
}; 

var auth = new Authentification(); 
alert(auth.isComponentAvailable()); 
2

isComponentAvailable là thực sự gắn liền với đối tượng cửa sổ.

+4

Đúng, nhưng bạn nên đăng tải dưới dạng nhận xét chứ không phải là câu trả lời –

Các vấn đề liên quan