private-class
v0.1.1
Published
Private fields in js classes
Downloads
10
Maintainers
Readme
private-class
Private fields in js classes
This module allow to protected private properties of classes.
It work by creating a new prototype that wrap each methods of the original one.
On creation of a new instance of the wrapped prototype, a new instance of the original class is created and saved in a WeakMap. Wrapped methods retrieve the original class instance from there and forward the class to its methods.
Usage
const priv = require('private-class');
const Person = priv(class Person {
constructor(name, age) {
this._name = name;
this._age = age;
}
get age() {
return this._age;
}
set age(value) {
this._age = value;
}
name() {
return this._name;
}
});
const p = new Person('Andrea', 40);
// public function are visible
console.log(typeof p.name);
// <-- function
// public getter & setter are visible
p.age = 41;
console.log(p.age);
// <-- 41
// public function can read private fields
console.log(p.name());
// <-- Andrea
// extern code can not read private fields
console.log(p._name);
// <-- undefined
console.log(p._age);
// <-- undefined
API
const privateClass = (Class: function): function
Given a class, return a new class that doesn't allow to access private properties.
Install
With npm installed, run
$ npm install private-class
See Also
License
MIT