未捕获类型错误javascript方法
uncaught type error javascript method
我有一个正在创建的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};
相关文章:
- 从Javascript方法返回全局变量
- 简单的JavaScript方法链接
- 如何为javascript方法放入jquery确认对话框
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 在类外重写Javascript方法,使用默认行为
- 使用 JavaScript 方法滚动
- 如何从窗体调用外部javascript方法
- 使用c#在Web服务器上运行JavaScript方法
- 如何从角度 js 调用 javascript 方法
- 在Node.js中,我在哪里可以看到JavaScript方法的源代码,例如hasOwnProperty
- 简单的javascript方法问题
- iframe未执行Javascript方法(PHP)
- Javascript 方法看不到对象变量
- 从HTML中的另一个文件访问javascript方法
- 如何测试只在闭包范围中可见的javascript方法
- 将php表转换为angularjs javascript方法
- 使用ScriptManager.RegisterStartupScript从代码隐藏调用javascript方法
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- Java eqivalent method of “splice(a,b,..)“在 JavaScript 方法中
- 在客户端 Javascript 方法之后运行服务器方法