Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
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
The npm package inheritance receives a total of 0 weekly downloads. As such, inheritance popularity was classified as not popular.
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.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.