我正在使用Node.js开发游戏;我有一个包含position
属性和fire
方法的Bot类。此方法的作用如下:
Bot.prototype.fire = function () {
this.bombs.push(new Bomb(this.position));
};
显然,炸弹的位置必须与机器人的位置不同,所以我希望将this.position
复制到我的新炸弹对象中。
但在这种情况下,对象通过引用而不是值传递给构造函数,因此如果我在Bomb的构造函数中编写this.position = position
,游戏就无法工作。
现在我的问题非常简单:是否有简单方式(我不想为此定义新函数)以按值传递position
对象而不是通过参考?或者我被迫在Bomb的构造函数中写下这样的东西:
this.position = {
x: position.x,
y: position.y,
angle: position.angle
};
提前感谢您的帮助:)
答案 0 :(得分:1)
您无法通过引用传递对象。但是您可以在传递对象之前克隆它。最简单的方法是使用Object.create()
:
Bot.prototype.fire = function () {
this.bombs.push(new Bomb(Object.create(this.position)));
};
答案 1 :(得分:0)
如果您使用的是jQuery,则可以通过值轻松复制对象。
var obj = {foo: 'foo', bar: 'bar'};
var newObject = jQuery.extend({}, obj);
您还可以使用true
作为第一个参数进行深度复制(慢速,递归)。
var newObject = jQuery.extend(true, {}, obj);
答案 2 :(得分:0)
您可以使用Object.create
:
this.bombs.push(new Bomb(Object.create(this.position)));