Javascript中的链表和对象错误
我正在尝试JS及其各种库,但遇到了一个错误,我不太确定如何解释。有关守则如下:Javascript中的链表和对象错误,javascript,Javascript,我正在尝试JS及其各种库,但遇到了一个错误,我不太确定如何解释。有关守则如下: function plotPoint (y, next, prev) { this.y = y; this.next = next; this.prev = prev; } function Fourier() { var self = this; self.init() = function() { ... self.firstPoint =
function plotPoint (y, next, prev) {
this.y = y;
this.next = next;
this.prev = prev;
}
function Fourier() {
var self = this;
self.init() = function() {
...
self.firstPoint = new plotPoint(250, null, null);
console.log(self.firstPoint); [1]
...
}
self.animate() = function() {
...
console.log(self.firstPoint); [2]
self.updatePlot();
...
}
self.updatePlot = function() {
console.log(self.firstPoint); [3]
//add new point to beginning
var newPoint = new plotPoint(self.leadPoint.y, self.firstPoint, null);
self.firstPoint.prev = newPoint
self.firstPoint = self.newPoint;
//remove last point from list, leave for collection
self.lastPoint = self.lastPoint.prev;
self.lastPoint.next = null;
}
}
console.log的所有三个结果都显示了正确的对象,但后两个结果都伴随着一个“未定义”:
然后抛出错误“UncaughtTypeError:Cannotsetproperty'prev'of undefined”,参考[3]后面的一行
如果有帮助的话,当程序没有被封装在类中时,它正在工作。我试图修改它,以便将其与dat.GUI一起使用
提前感谢您的回复
编辑:对于jsfiddle对象
self
没有newPoint
属性,因此它是未定义的。当您在第106行将undefined
分配给self.firstPoint
时,它也会变成undefined
。这里有几件事困扰着我。。。self.init()=函数(){..}似乎不合法。self.init=函数()。接下来,plotPoint不返回任何值,因此此处newPoint的值为。。。空还是未定义?var newPoint=新绘图点(self.leadPoint.y、self.firstPoint、null)@wwwmarty:当函数作为构造函数调用时(即,使用new
),默认情况下,它返回自身的一个新实例-一个指向plotPoint
原型的对象。@MrDiggles:用你的代码示例创建一个小提琴怎么样:@DRD我添加了链接到question@MrDiggles当我单击run时,您的JSFIDLE似乎并没有做任何事情(它只是在控制台中显示“PIXI.Container不是一个函数”)。我用的是Chrome45,附带评论。如果您将有几个Fourier()
的实例,那么为什么不将其所有方法添加到其原型中呢?此外,在这一行中,self.firstPoint=self.newPoint
,则从未声明过self.newPoint
,因此它是未定义的
,这可能是您的问题。哦。是的,这就是问题所在。谢谢你的帮助
[1] plotPoint {y: 250, next: plotPoint, prev: null}
[2] plotPoint {y: 250, next: plotPoint, prev: null}
[3] plotPoint {y: 250, next: plotPoint, prev: null}
[2] undefined
[3] undefined