# vjs.CoreObject __DEFINED IN__: [src/js/core-object.js#L52](https://github.com/videojs/video.js/blob/master/src/js/core-object.js#L52) Core Object/Class for objects that use inheritance + contstructors To create a class that can be subclassed itself, extend the CoreObject class. var Animal = CoreObject.extend(); var Horse = Animal.extend(); The constructor can be defined through the init property of an object argument. var Animal = CoreObject.extend({ init: function(name, sound){ this.name = name; } }); Other methods and properties can be added the same way, or directly to the prototype. var Animal = CoreObject.extend({ init: function(name){ this.name = name; }, getName: function(){ return this.name; }, sound: '...' }); Animal.prototype.makeSound = function(){ alert(this.sound); }; To create an instance of a class, use the create method. var fluffy = Animal.create('Fluffy'); fluffy.getName(); // -> Fluffy Methods and properties can be overridden in subclasses. var Horse = Animal.extend({ sound: 'Neighhhhh!' }); var horsey = Horse.create('Horsey'); horsey.getName(); // -> Horsey horsey.makeSound(); // -> Alert: Neighhhhh! --- ## INDEX - [METHODS](#methods) - [create](#create-static) - [extend](#extend-props--static) --- ## METHODS ### create() `STATIC` > Create a new instace of this Object class > > var myAnimal = Animal.create(); ##### RETURNS: * `vjs.CoreObject` An instance of a CoreObject subclass _defined in_: [src/js/core-object.js#L120](https://github.com/videojs/video.js/blob/master/src/js/core-object.js#L120) --- ### extend( props ) `STATIC` > Create a new object that inherits from this Object > > var Animal = CoreObject.extend(); > var Horse = Animal.extend(); ##### PARAMETERS: * __props__ `Object` Functions and properties to be applied to the ##### RETURNS: * `vjs.CoreObject` An object that inherits from CoreObject _defined in_: [src/js/core-object.js#L70](https://github.com/videojs/video.js/blob/master/src/js/core-object.js#L70) ---