Сообщение от Keramet
			 
		
	 | 
	
		callbackhell, 
 Я вот тоже так думал, но: 
1. 
function Person() {}
var p1 = new Person();
Person.prototype.name = "Nicholas";
Person.prototype.age = 29;
var p2 = new Person();
 
 
2. 
function Person() {}
var p1 = new Person();
Person.prototype = {
	name : "Nicholas",
	age : 29
};
var p2 = new Person();
 
 
дают разные результаты. В чём подвох - не пойму  
	 | 
	
в первом случае p1.__proto__ и p2.__proto__ ссылаются на один и тот же объект - Person.prototype. Он не менялся, в него просто добавили два поля.
Во втором - p1.__proto__ ссылается на предыдущий Person.prototype, который был заменен новым объектом уже после создания p1. И потому p1 более не считается экземпляром Person, с точки зрения прототипного ООП.
Второй случай вполне допустим, только заменять Person.prototype надо сразу же при создании функции Person, до создания экземпляров. И не забыть туда свойство constructor поместить, о чем ранее говорилось. Тогда всё будет нормалёк.
Ну а ежели какое наследование замутить изволите, то там особо без вариантов:
Person.prototype = Object.create(ParentClass.prototype);
и далее добавление методов по первой схеме.