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.
This module allows you to implement inheritance for your classes.
At first get a module instance:
var ClassMaker = require("ClassMaker");
ClassMaker
has only one method: extend
. This method takes object as the parameter; its fields and methods will be added to the new class-hier.
var HeirClass = ClassMaker.extend(parentObject);
Note: The
extend
method generates and returns a new class with all properties of an object that called theextend
method and all properties of the parent object. It does not change the parent object or the class.
Let's show how it works.
First we describe an Animal
class constructor:
function Animal(name) {
this.name = name||"Undefined Animal";
this.getAbility = function () {
return "I can run";
};
this.whoAreYou = function () {
return "I am " + this.name + ", " + this.getAbility()
}
}
And now we create a class-heir Dog:
var Dog = ClassMaker.extend(new Animal("Dog"));
Please note, we have created an instance of the Animal
class. Now we can create an instance of the Dog
class. Let's do this and call method whoAreYou
var Dog = ClassMaker.extend(new Animal("Dog"));
var dog = new Dog;
console.log(dog.whoAreYou());
> I am Dog, I can run
Now let's extend the Animal
class and create a Duck
class. For this purpose, we describe a bird
object which extends the Duck
class.
var bird = {
ability: "fly",
getAbility: function () {
return "I can "+ this.ability;
}
};
var Duck = ClassMaker.extend(new Animal("Duck"));
Duck = Duck.extend(bird);
var duck = new Duck;
console.log(duck.whoAreYou());
> I am Duck, I can fly
We have added properties of the bird
object to properties of the Duck
class and overrode the Duck
class.
We have added an ability
field and overrode (hidden) parent method getAbility
of the Duck
class.
Note: The following code does not change the
Duck
class:
Duck.extend(bird);
The extend
method returns a new class! It does not change the current class or the parent object!
But what should we do if we need to call the parent method? Let's see an example.
var SwimDuck = Duck.extend({
whoAreYou: function() {
return this._super()+ ", and swim"; // parent
}
});
swimDuck = new SwimDuck();
console.log(swimDuck.whoAreYou());
> I am Duck, I can fly, and swim
So, all of your parent methods are stored and you can call them using method _super() into the method body.
Good Luck!
FAQs
Extend class methods and fields
The npm package classmaker receives a total of 7 weekly downloads. As such, classmaker popularity was classified as not popular.
We found that classmaker 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.