JavaScript функция inherit() -- реализация, пример
Primary tabs
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...
- Log in to post comments
- 3961 reads