Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   объединение объектов (https://javascript.ru/forum/misc/51540-obedinenie-obektov.html)

SunYang 10.11.2014 16:01

объединение объектов
 
Помогите понять пожалуйста.
Есть два объекта:

function Animal(name) {
		  this.name = name;
		  this.x = 10;
		  this.y = 10;
		}
		function Rabbit(name){
			this.name2 = name;
			this.x = 20;
			this.m = 1000;
		}
		var o1 = new Animal('n1');
		var o2 = new Rabbit('n2');
		Rabbit.prototype = Object.create(new Animal('Animal'));
		Rabbit.prototype.run = function(){
			console.log(++this.x);
		}
		var o = new Rabbit('Rabbit');
		console.log(o);
		console.log(Object.keys(o));


console.log(o); выводит:
Animal { name2="Rabbit", name="Animal" x=20, y=10, m=1000, run=function() }
Т.е свойства и методы обоих объектов, свойство x переопределилось.
А вот Object.keys(o) выводит только свойства и методы объекта Rabbit.

Подскажите, почему так происходит?

Erolast 10.11.2014 16:14

Здесь нет никакого объединения, здесь наследование, а object.keys выводит только собственные свойства.

krutoy 10.11.2014 20:37

Цитата:

Сообщение от SunYang
console.log(o); выводит:
Animal { name2="Rabbit", name="Animal" x=20, y=10, m=1000, run=function() }

Ты где проверял? run и name не должно выводится. А в чем вопрос я толком не понял.


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