未捕获的类型错误javascript方法

时间:2016-04-09 16:50:17

标签: javascript object methods uncaught-typeerror

我有一个我正在创建的Node对象。以下是Node对象的构造函数的相关代码:

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

然后我有一个嵌套循环,它创建一个节点网格,并尝试访问一些节点'方法。 "映射"是一个字符串数组。每个字符串代表编码地图上的一条线。地图上的每一行都有相同的长度,行中的每个字符都是" 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。提前致谢!

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点:

scripts: [{
    content: "request.data={endpoints: " + JSON.stringify(json) + " }; done();"
}] 

您应该始终在上面的代码中使用function Node(x,y,traversable){ ... this.traversable = traversable; ... this.isTraversable = function(){ return this.traversable}; } ,错误的原因this不是函数,使用上面的代码,temp.isTranversable会引用{{1}现在。

或将其直接添加到原型中:

this