【问题标题】:uncaught type error javascript method [closed]未捕获的类型错误javascript方法[关闭]
【发布时间】:2016-07-30 21:56:10
【问题描述】:

我有一个正在创建的 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。提前致谢!

【问题讨论】:

  • 使用this.isTraversable而不是节点
  • 正确答案@JordanHendrix

标签: javascript object methods typeerror


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2014-09-03
    • 1970-01-01
    • 2013-12-03
    • 2019-02-20
    • 2012-10-16
    相关资源
    最近更新 更多