Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我有一个正在创建的Node对象。这是Node对象的构造函数中的相关代码:
然后,我有一个嵌套循环,该循环创建节点的网格并尝试访问某些节点的方法。 “地图”是一个字符串数组。每个字符串代表编码地图上的一条线。地图上的每一行都有相同的长度,并且行中的每个字符都是“ e”或“ o”,表示可穿越的空间或障碍物空间。以下是相关代码:
我得到的错误是:
谁能向我解释为什么不允许我访问在构造函数中定义的函数?我是JavaScript的新手,尤其是面向对象的JavaScript。提前致谢!
您应该始终在上面的代码中使用
或直接将其添加到原型中:
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我有一个正在创建的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。提前致谢!
最佳答案
几种方法可以做到这一点:
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};