JavaScript变量更新

时间:2014-09-14 22:35:54

标签: javascript variables three.js

我注意到在ThreeJs中你:

    var a = new THREE.BoxGeometry();
    scene.add(a);
    a.position.z += 23.5;

您将对象多维数据集传递给具有所有顶点等的场景,但是当您编辑它时,变量scene知道新坐标。如果不将a传递回scene

,这怎么可能呢?

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您将对象a传递给了scene.add方法"通过引用",以便a的所有未来更改都是"已知&#34 ;由scene对象。

为了演示此行为,您可以在js控制台中尝试以下代码:

var a = {foo: 'bar'}, scene = {
    add: function(obj) {this.obj = obj},
    print: function() { console.log(this.obj.foo);}
});
scene.add(a);
scene.print(); // outputs bar
a.foo = 'baz';
scene.print(); // outputs baz