Сообщение от Mixxx
			 
		
	 | 
	
		Исправил вашь код: 
function log(a){document.body.innerHTML+=a+'<br>'}
//функция хуман это не конструктор, она возвращает конструктор которы надо потом инициализировать с помощью new
var human = (function () {
	var prototype = {}
	//prototype.getName
	var _data, _name;
	
	prototype.setName = function (str)
	{
		if (str) _name = str
	}
	prototype.getName = function () 
	{
		return _name
	}
	function constructor(data) {
		//this.name
                       _data=data
	}
	constructor.prototype = prototype
	return constructor
})
var Alfa = new (human())() //столько скобок нужно что бы new относилось к constructor а не к human, 
Alfa.setName('Vasia')
log('Alfa: '+ Alfa.getName() )
var Beta = new (human())()
Beta.setName('Petia')
Beta._name='Евгений Ваганыч'; //создаться публичное свойство _name но приватное _name не изменится
log('Beta: '+ Beta.getName() );
log('Alfa: '+ Alfa.getName() )
 
 
 
Раед, 
Вашь код не работает в IE9 и Опере (в других не тестил)  
опера ругается Uncaught exception: TypeError: 'h1.getName' is not a function 
И я не понимаю что за синтаксис такой +function
	 | 
	
Это конечно решение, но я так понимаю смысл использование прототипов теряется? Потому как: Alfa.__proto__ !== Beta.__proto__ Ну то-бишь не реюзится отсылка к прототипу уже, а попросту новые прототипы?
В таком случае решение с символом «_» — лучший вариант, когда нужны тру-прототипы.