2016-04-09 26 views
0

Oluşturduğum bir Düğüm nesnesine sahibim. İşte Düğüm nesnesi için yapıcı kod ilgili biraz: yakalanmamış türde hata javascript yöntemi

function Node(x,y,traversable){ 
    ... 
    this.traversable = traversable; 
    ... 
    Node.isTraversable = function(){ return this.traversable}; 
} 

Sonra düğümlerin bir ızgara oluşturur ve düğümlerin yöntemlerden bazılarını erişmeye çalıştığında iç içe geçmiş bir döngü var. "harita" dizeleri dizisidir. Her dize, kodlanmış bir haritada bir çizgiyi temsil eder. Haritadaki her satırın uzunluğu aynıdır ve satırdaki her karakter, "e" veya "o" şeklindedir ve bu, geçişli boşlukları veya engel alanlarını belirtir.

... 
var nodes = []; 
... 
for (var i=0;i<map.length;i++){ 
    var array = []; 
    nodes.push(array); 
    for(var j=0;j<map[i].length;j++){ 
     var temp = new Node(i,j,map[i][j]=='o'||map[i][j]=='O' ? false : true); 
     if(temp.isTraversable()) console.log('check ok'); 
     ... 
    } 
} 

geri is olsun hata:

Uncaught TypeError: temp.isTraversable is not a Function 

kimse ben yapıcı tanımladığınız fonksiyona erişmek için izin değilim neden bana açıklayabilir İlgili kod nedir? JavaScript’e yeni, özellikle Nesne Yönelimli JavaScript’e. Şimdiden teşekkürler! Bunu yapmak için

+2

kullanımını ' – JordanHendrix

+1

doğru cevap – vahanpwns

+1

Teşekkür herkes @JordanHendrix Düğüm değil this.isTraversable'! – nbk

cevap

1

Çift yolları: Yukarıdaki kodda

function Node(x,y,traversable){ 
    ... 
    this.traversable = traversable; 
    ... 
    this.isTraversable = function(){ return this.traversable}; 
} 

nasıl kullanmanız gerekir this, sizin Hatanın nedeni temp.isTranversable bir işlev yukarıdaki kod ile, thistemp bakın istiyorsunuz, değil mi şimdi.

veya prototip doğrudan ekleyin:

function Node(x,y,traversable){ 
    ... 
    this.traversable = traversable; 
    ... 

} 

Node.prototype.isTraversable = function(){ return this.traversable}; 
+1

Çok teşekkürler! – nbk

İlgili konular