2016-04-09 9 views
0

私は作成しているNodeオブジェクトを持っています。ここで、ノードオブジェクトのコンストラクタからのコードの該当ビットである:キャッチした型のエラーjavascriptのメソッド

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

そしてIは、ノードのグリッドを作成し、ノードの方法のいくつかにアクセスしようとするネストされたループを有します。 "map"は文字列の配列です。各文字列は、コード化されたマップ上の行を表します。マップ上の各行は同じ長さを持ち、行のすべての文字は「e」または「o」のいずれかで、移動可能なスペースまたは障害物のスペースを示します。ここでは、関連するコードは次のとおりです。私は戻って取得

... 
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'); 
     ... 
    } 
} 

エラーがある:私は、私はコンストラクタで定義する機能にアクセスすることを許可されていないのですなぜ

Uncaught TypeError: temp.isTraversable is not a Function 

誰も私に説明できますか?私はJavaScript、特にオブジェクト指向のJavaScriptを初めて熟知しています。前もって感謝します!これを行うに

+2

使用 ' – JordanHendrix

+1

正しい答えは – vahanpwns

+1

おかげで皆を@JordanHendrixノードではないthis.isTraversable'を! – nbk

答えて

1

カップルの方法:あなたは、常に上記のコードでthisを使用する必要があります

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

を、あなたのエラーの原因は、temp.isTranversable上記のコードで、thistempを参照することになり、機能ではありません今。

やプロトタイプに直接追加:

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

} 

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

ありがとう! – nbk

関連する問題