JavaScript функция inherit() -- реализация, пример

JS фактически обладает возможностью создавать новые объекты с произвольными прототипами - возможность создавать «наследников» от любых объектов:


// inherit() возвращает вновь созданный объект, наследующий свойства
// объектапрототипа p. Использует функцию Object.create() из ECMAScript 5,
// если она определена, иначе используется более старый прием.
function inherit(p) {
	if (p == null) throw TypeError(); // p не может быть значением null
	if (Object.create)         // Если Object.create() определена...
		return Object.create(p);// использовать ее.
		
	var t = typeof p;// Иначе выяснить тип и проверить его
	if (t !== "object" && t !== "function")  // если не объект и не функция
		throw TypeError(); // бросаем исключение

	function f() {};// Определить фиктивный конструктор.

	f.prototype = p;// Записать в его свойство prototype  ссылку на объект p.
	return new f();// Использовать f() для создания
	// "наследника" объекта p.
}

Считается, что впервые была реализована Дугласом Крокфордом (Douglas Crockford) - как функция создающая новые объекты таким способом. См. http://javascript.crockford.com/prototyp...

Key Words for FKN + antitotal forum (CS VSU):