麻烦传递Vector数组通过JS类

时间:2015-11-22 16:28:46

标签: javascript arrays class

我遇到了麻烦传递和类“节点”中保存的向量(子节点)数组。上课。任何明显的错误?

// 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
}

1 个答案:

答案 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; }
    ...
}