Javascript对象的浅副本未定义?

时间:2015-06-12 20:05:22

标签: javascript oop object parameters shallow-copy

我刚开始学习一周前的Javascript,所以请耐心等待。我正在尝试使用四叉树和节点作为所有对象的支持结构来创建基本物理引擎。 但是在这段代码中

102 Quadtree.prototype.insert= function(self, object){
103     if (object == null){
104         return;
105     }
106     var objectx,
107         objecty,
108         objectw,
109         objecth;
110     objectx = object.getDim()[0];
111     objecty = object.getDim()[1];
112     objectw = object.getDim()[2];
113     objecth = object.getDim()[3];
114     var cn = root;
115     if(cn == undefined){
116         console.log("asdgalkjh");
117     }

cn(当前节点)返回undefined。对象也为空。 我知道我的问题是由于不知道javascript对象如何工作而引起的。有人可以给我一个总结或指出我在哪里阅读?感谢。

这是我的节点和四叉树类供参考

94 function Quadtree(width,height){
95     this.width = width;
96     this.height = height;
97     this.MAX_LEVELS = 4;
98     this.MAX_OBJ = 2;
99     var root = new Node(0,0,width,height);
100     root.split();
101 }

13 function Node(x,y,width,height){
14     var x,
15         y,
16         width
17         height;
18     this.x = x;
19     this.y = y;
20     this.width = width;
21     this.height = height;
22     var hash = 0;
23     var objects = new Array();
24     var parent = null;
25     var child1 = null;
26     var child2 = null;
27     var child3 = null;
28     var child4 = null;
29 }

我意识到我可能做了很多错事,我来自一个沉重的java背景,javascript对象通过引用来调用'这到目前为止也令人困惑。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您正在尝试访问只能在root构造函数中访问的私有变量QuadTree

如果您想在其他任何地方使用它,您必须制作一个getter或将其放入公共成员(即this.root = new Node(0,0,width,height);),然后使用this.root

访问它