Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Lightweight JavaScript prototypal inheritance model

License

NotificationsYou must be signed in to change notification settings

LinkedInAttic/Fiber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Why another JavaScript inheritance library?

Take a look at theperformance tests to see how it compares against commonly used inheritance libraries.

Inheritance

Usage

[[constructor]].extend( function )

Example

// Animal base classvarAnimal=Fiber.extend(function(){return{// The `init` method serves as the constructor.init:function(){// Privatefunctionprivate1(){}functionprivate2(){}// Privilegedthis.privileged1=function(){}this.privileged2=function(){}},// Publicmethod1:function(){}}});

Theinit method acts as the constructor, which is invoked when an instance is created:

varanimal=newAnimal();// Create a new Animal instance

init is invoked automatically.

Inheritance

// Extend the Animal class.varDog=Animal.extend(function(){return{// Override base class `method1`method1:function(){console.log('dog::method1');},scare:function(){console.log('Dog::I scare you');}}});

Create an instance ofDog:

varhusky=newDog();husky.scare();// "Dog::I scare you'"

Accessing parent prototype

Every class definition has access to the parent's prototype via the first argument passed into the function:

// Extend the Animal class.varDog=Animal.extend(function(base){return{// Override base class `method1`method1:function(){// Call the parent methodbase.method1.call(this);},scare:function(){console.log('Dog::I scare you');}}});

Mixin

Mixins are a way to add functionality to a Fiber definition. Basically, they address the problem of "multiple inheritance".Read more.

Usage

Fiber.mixin( object, function1, function2, ... )

varFoo=Fiber.extend(function(base){return{method1:function(){}}});varf=newFoo();f.method1();varmix1=function(base){return{method2:function(){}}}Fiber.mixin(Foo,mix1);f.method2();

Decorators

With decorators you can dynamically attach additional properties to an instance.Read more.

Usage

Fiber.decorate( instance, decorator_1, ... , decorator_n )

functionCarWithPowerWindows(base){return{roll:function(){}}}Fiber.decorate(myCar,CarWithPowerWindows);

Proxy

Usage

Fiber.proxy( base, instance )

// Extend the Animal class;varDog=Animal.extend(function(base){return{init:function(){this.base=Fiber.proxy(base,this);this.base.init();}}});

noConflict

Usage

Fiber.noConflict()

Returns a reference to the Fiber object, and sets theFiber variable to its previous owner.

About

Lightweight JavaScript prototypal inheritance model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp