我遇到了麻烦传递和类“节点”中保存的向量(子节点)数组。上课。任何明显的错误?
// Node class
// other class code
var subNodePos =[]; // array has been correctly populated in node class
// init array in construct
// array has been correctly populated in node class
Node.prototype.getSubNodeArray = function () { return this.subNodePos; }
// Main class
function draw()
{
// code ...
// can access all object variables and methods except for this one array
var famPos = node.getSubNodeArray(); // passing array // fails here 'undefined'
var temp = famPos[0]; // error
}
答案 0 :(得分:0)
您已将subNodePos
声明为node
构造函数的私有变量。
但此变量不适用于此方法:
Node.prototype.getSubNodeArray = function () { return this.subNodePos; }
您可以通过至少两种方式修复它:
解决方案1.让subNodePos
成为公共成员
在构造函数中将其设为this
的属性:
function Node() {
...
this.subNodePos = [];
...
}
Node.prototype.getSubNodeArray = function () { return this.subNodePos; }
解决方案2.在对象级别定义getSubNodeArray
这是您希望subNodePos
保密的时候。然后,您可以保留var
声明,但必须在没有this
的情况下引用它:
function Node() {
...
var subNodePos = [];
...
this.getSubNodeArray = function () { return subNodePos; }
...
}