日期:2014-05-16  浏览次数:20465 次

关于javascript类的一个问题
初接触javascript,用javascript实现Dijkstra算法,定义数据结构,不知如下的定义方式是否可行:
function   Point(n){
var   i;
this.id=n;
this.nextnum=null;
this.marked=null;
for(i=0;i <this.nextnum;i++){
this.next[i]_id=null;
this.next[i]_dis=null;
this.next[i]_weight=null;
}
}


------解决方案--------------------
呵呵,最短路径算法,忘光光

不过 JS 很是能看懂的,LZ 的代码在实例化 Point 时只能初始化 id 一个属性,

相邻节点数目以及相邻节点集合根本没有初始化,不知道 LZ 何时处理其它属性。

至少应该这个样子吧?

// 相邻节点数组。
var nextPoints = new Array(p1, p3, p5);

// 如果不喜欢数组,就直接传入,用 arguments 获取。
function Point(n, nextPoints){
var i;
this.id=n;
this.nextnum=nextPoints.length;
this.marked=null;
for(i=0;i <this.nextnum;i++){
this.next[i]_id=nextPoints[i].id;
this.next[i]_dis=nextPoints[i].dis;
this.next[i]_weight=nextPoints[i].weight;
}
}
------解决方案--------------------
具体问题具体分析.

你可以去找本关于JavaScript OOP 的书看看.或者 看看别人现成的开源类源码.学学别人的用法,就知道了.
大一些的象 prototype jquery Yahoo UI 这些.都是蛮经典的OOP源码.