Javascript,通过值将对象传递给构造函数

Javascript,通过值将对象传递给构造函数,javascript,pass-by-value,Javascript,Pass By Value,我正在使用Node.js开发一个游戏;我有一个Bot类,它包含一个位置属性和一个开火方法。此方法的作用如下: Bot.prototype.fire = function () { this.bombs.push(new Bomb(this.position)); }; 显然,炸弹的位置必须与机器人的位置不同,因此我希望将这个.position复制到我的新炸弹对象中。 但在这种情况下,对象是通过引用而不是通过值传递给构造函数的,因此如果我在Bomb的构造函数中写入this.positio

我正在使用Node.js开发一个游戏;我有一个Bot类,它包含一个
位置
属性和一个
开火
方法。此方法的作用如下:

Bot.prototype.fire = function () {
    this.bombs.push(new Bomb(this.position));
};
显然,炸弹的位置必须与机器人的位置不同,因此我希望将
这个.position
复制到我的新炸弹对象中。 但在这种情况下,对象是通过引用而不是通过值传递给构造函数的,因此如果我在Bomb的构造函数中写入
this.position=position
,游戏将无法运行

现在我的问题非常简单:是否有一种简单的方法(我不想为此定义一个新函数)通过值而不是引用传递
位置
对象?还是我被迫在Bomb的构造器中写下这样的东西:

this.position = {
    x: position.x,
    y: position.y,
    angle: position.angle
};

提前感谢您的帮助:)

如果您使用jQuery,您可以轻松地按值复制对象

var obj = {foo: 'foo', bar: 'bar'};

var newObject = jQuery.extend({}, obj);
您还可以使用
true
作为第一个参数进行深度复制(慢速递归)

var newObject = jQuery.extend(true, {}, obj);

不能通过引用传递对象。但是你可以在传递之前克隆一个对象。最简单的方法是使用
Object.create()


您可以使用
对象。创建

Bot.prototype.fire = function () {
    this.bombs.push(new Bomb(Object.create(this.position)));
};
this.bombs.push(new Bomb(Object.create(this.position)));

谢谢,这就是我要找的:)谢谢,这就是我要找的:)一切在JavaScript中都是按值传递的,就像Java一样。“对象”不是JavaScript中的值,不能“传递”<代码>位置
是指向对象的指针,而不是对象本身。