DoneJS StealJS jQuery++ FuncUnit DocumentJS
3.14.1
5.0.0 4.3.0 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-compute
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-stream
      • can-define-stream-kefir
      • can-event
      • can-event/async/async
      • can-event/batch/batch
      • can-event/lifecycle/lifecycle
      • can-kefir
      • can-list
      • can-map
      • can-map-backup
      • can-map-define
      • can-observation
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
    • Data Modeling
      • can-connect
      • can-connect-cloneable
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-signalr
      • can-fixture
      • can-fixture-socket
      • can-ndjson-stream
      • can-set
    • Views
      • can-component
      • can-ejs
      • can-element
      • can-react-component
      • can-stache
      • can-stache/helpers/route
      • can-stache-bindings
      • can-stache-converters
      • can-view-autorender
      • can-view-callbacks
      • can-view-href
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • react-view-model
      • react-view-model/component
      • steal-stache
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-globals
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-string
      • can-string-to-any
      • can-util
      • can-zone
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-control
      • can-dom-events
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-jquery
    • Data Validation
      • can-define-validate-validatejs
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
        • prototype
          • constructor
          • init
          • setup
        • static
          • ReturnValue
          • constructorExtends
          • extend
          • newInstance
          • setup
          • shortName
      • can-construct-super
      • can-namespace
      • can-reflect
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

can-construct

  • npm package badge
  • Star
  • Edit on GitHub

Provides a way to easily use the power of prototypal inheritance without worrying about hooking up all the particulars yourself. Use can-construct.extend to create an inheritable constructor function of your own.

new Construct( ...args )

Creates a new instance using Construct's constructor functions.

Parameters

  1. args {*}:

    The arguments passed to the constructor.

Returns

{Object}:

The instantiated object.

Use

In the example below, Animal is a constructor function returned by can-construct.extend. All instances of Animal will have a speak method, and the Animal constructor has a legs property.

import Construct from "can-construct";
const Animal = Construct.extend( {
    legs: 4
},
{
    speak: function() {
        console.log( this.sound );
    }
} );

An optional setup function can be specified to handle the instantiation of the constructor function.

const Animal = Construct.extend( {
    legs: 4,
    setup: function( sound ) {
        return [ sound ];
    }
},
{
    speak: function() {
        console.log( this.sound );
    }
} );

setup returns {Array|undefined} If an array is returned, the array's items are passed as arguments to init.

In addition init can be specified which is a method that gets called with each new instance.

const Animal = Construct.extend( {
    legs: 4,
    init: function( sound ) {
        this.sound = sound;
    }
},
{
    speak: function() {
        console.log( this.sound );
    }
} );

For more information on deciding when to use setup or init see the bottom of the setup documentation.

You can make instances of your object by calling your constructor function with the new keyword. When an object is created, the init method gets called (if you supplied one):

const panther = new Animal( "growl" );
panther.speak(); // "growl"
panther instanceof Animal; // true

Plugins

There are plugins available to help make using can-construct even simpler.

  • can-construct-super allows you to easily call base methods by making this._super available in inherited methods.

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 3.14.1.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news