private-class

0.1.1 • Public • Published

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

Travis Build Status Code Climate Coverage Status NPM downloads

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

Package Sidebar

Install

npm i private-class

Weekly Downloads

1

Version

0.1.1

License

MIT

Last publish

Collaborators

  • parroit