Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скопировать объект но не стать им (https://javascript.ru/forum/misc/28947-skopirovat-obekt-no-ne-stat-im.html)

BorodinKO 08.06.2012 01:16

Скопировать объект но не стать им
 
function myBook(){
  this.x = 0;
  this.y = 0;
}

book = new Array();

book[0] = new myBook();
book[1] = book[0];

book[1].x = 1;
alert(book[0].x);


В этом случае book[1] - становится как бы ярлыком на book[0];
а мне надо так чтобы он скопировался, не подскажите как это сделать?

Magneto 08.06.2012 01:59

function myBook(){
  this.x = 0;
  this.y = 0;
}

book = new Array();

book[0] = new myBook();
book[1] = new myBook();

book[1].x = 1;
alert(book[0].x);

BorodinKO 08.06.2012 08:04

Мне важно, чтобы book[1] принял теже параметры что и у book[0];

function myBook(){
  this.x = 0;
  this.y = 0;
}

book = new Array();

book[0] = new myBook();
book[0].x+=10;book[0].y+=10;

book[1] = book[0];

book[1].x = 1;
alert(book[0].x);

Deff 08.06.2012 10:39

function myBook(){
  this.x = 0;
  this.y = 0;
}

book = new Array();

book[0] = new myBook();
book[1] = new myBook();

book[1].x = book[0].x 
book[1].y = book[0].y 

book[1].x = 1

alert(book[0].x);

nerv_ 08.06.2012 16:03

Цитата:

Сообщение от Maxmaxmахimus
//по этому это не полнцоенное копирование.

потому, что это "правильное" наследование : )
Мне остается только дать ссылку, по которой приводится пример как это сделать кросс-браузерно и немного невнятной альтернативы ниже.
function MyBook() {
	this.x = 0;
	this.y = 0;
}

MyBook.prototype.copyFrom = function( obj ) {
	var key;
	for( key in obj ) {
		if ( obj.hasOwnProperty( key ) ) {
			this[ key ] = obj[ key ];
		}
	}
};

book = [ new MyBook(), new MyBook() ];

book[ 0 ].x = 11;
book[ 0 ].y = 12;

book[ 1 ].copyFrom( book[ 0 ] );

alert( book[ 1 ].x );


Часовой пояс GMT +3, время: 14:26.