Пример наследование из библиотеки createJs с которой сейас работаю
//обьявляем неймспейс
this.createjs = this.createjs||{};
//наследуем
(function() {
//конструктор
var Shape = function(prop) {
//вызов функции инициализации
this.initialize(prop);
}
//наследуем от родителя
var p = Shape.prototype = new createjs.DisplayObject();
//сохраним функцию инициализации родителя, вдруг пригодится
p.DisplayObject_initialize = p.initialize;
//инициализация, по сути конструктор из классического ООП
p.initialize=function(prop){
this.x=prop.x;
this.y=prop.y;
}
// обьявляем новые методы и свойства
p.graphics = null;
p.test = function(){ hello() };
//приватный метод
function hello(){
alert('hello');
}
//записываем в неймспейс
this.createjs.Shape=Shape
})()
хочу разЪяснить один момент.(для новичков)
Главный недостаток вышеприведённого примера в том что вызывается конструктор DisplayObject при наследовании. Иногда это нужно, а иногда недопустимо.
Эта проблема легко решается.
Если вызов контструктора нужен, тогда оставляете
var p = Shape.prototype = new createjs.DisplayObject();
А если ненужен, то пишите
var p = Shape.prototype = Object.create( createjs.DisplayObject.prototype);
+ если вам вдруг понадобится вызвать конструктор родителя (иногда используется цепочка конструкторов) вы можете его вызвать через DisplayObject_initialize
вот ради этих возможностей и использован трюк с выносом кода конструктора в функцию initialize
P.S. Однако я сам использую по возможности функцию класс и я не вижу смысла боятся подобных функций.