Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
inheritance
Advanced tools
Provides two simple methods for working with inheritance and objects. This library is heavily influenced by the simplistic prototypal inheritance provided in both CoffeeScript and Backbone and simply exists so that it can be included in other libraries.
Creates a new constructor function that inherits from a parent constructor.
Instance and static methods can also be provided as additional arguments, if the
methods
argument has a property called constructor this will be
used as the constructor function.
parent
: A constructor Function to inherit from.methods
: An Object literal of instance methods that are added to the
constructors prototype (optional).properties
- An Object literal of static/class methods to add to the
constructor itself (optional).// Original function to inherit from.
function MyObject() {};
var SubClass = inherit(MyObject, {
instanceMethod: function () {}
}, {
staticProp: 'some-string',
staticMethod: function () {}
});
var instance = new SubClass();
instance instanceof MyObject //=> true
typeof instance.instanceMethod //=> "function"
typeof SubClass.staticMethod //=> "function"
A __super__
property is made available to all child classes that points to
the parent prototype
object. This can be used in methods to call the parent.
// Original function to inherit from.
function MyObject() {};
MyObject.prototype.say = function () { return 'Hello'; }
var SubClass = inherit(MyObject, {
constructor: function SubClass() {
SubClass.__super__.constructor.apply(this, arguments);
// Set up other properties.
},
say: function () {
return SubClass.__super__.say.apply(this, arguments) + ' World';
}
});
(new SubClass()).say(); //=> 'Hello World'
Extends an object with the properties on successive arguments. Returns the first argument. Properties will be copied from right to left with the right overriding the left.
target
: The object that is to be extended.arguments*
: Properties from all successive arguments will be copied to the target.mixin({type: 'person'}, {name: 'bill', age: 20}, {age: 21});
//=> {type: 'person', name: 'bill', age: 21}
Creates a new object instance and sets it's internal prototype to the parent
argument provided. This is based on Crockford's Object.create() but
will use the native Object.create()
if present. Unlike Object.create() this
function will always return a new object even if a non object is provided as an
argument.
parent
: An object to use for the new objects internal prototype.var appleObject = {color: 'green'}
var appleInstance = create(appleObject);
appleInstance.hasOwnProperty('color'); //=> false
appleInstance.color === appleObject.color; //=> true
Tests require Node and Vows to run. To install Vows using npm run:
$ npm install vows
Then to run the tests simply enter:
$ vows inheritance-test.js
Released under the MIT license
FAQs
Simple functions for extending JavaScript objects
We found that inheritance demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.