未捕获类型错误javascript方法

uncaught type error javascript method

本文关键字:javascript 方法 错误 类型      更新时间:2024-04-07

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

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

然后我有一个嵌套循环,它创建一个节点网格,并尝试访问一些节点的方法。"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。提前感谢!

实现这一点的两种方法:

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

您应该在上面的代码中始终使用this,错误的原因是temp.isTranversable不是函数,对于上面的代码,this现在将引用temp

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

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