Показать сообщение отдельно
  #1 (permalink)  
Старый 10.11.2014, 16:01
Профессор
Отправить личное сообщение для SunYang Посмотреть профиль Найти все сообщения от SunYang
 
Регистрация: 22.02.2008
Сообщений: 189

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

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.

Подскажите, почему так происходит?
Ответить с цитированием