0.1.1 • Published 6 years ago
@ganuz/scope v0.1.1
@ganuz/scope
Scope is package from Ganuz library
Install
$ yarn add @ganuz/scope
Or
$ npm install --save @ganuz/scope
Use
Module
import {
default as scope
} from '@ganuz/scope';
Browser
<script src="https://unpkg.com/@ganuz/scope/bundle.umd.min.js"></script>
let {
scope
} = G;
Examples
let $ = scope('some')
class Cool {
constructor(color: string){
$(this).color = color;
}
log() {
let {color} = $(this);
console.log(`color: ${color}`);
}
}
let cool = new Cool('green');
cool.log(); => 'color: green'
$(cool).color = 'blue';
cool.color = 'red';
cool.log(); => 'color: blue'
scope('some', cool).color = 'pink';
cool.log(); => 'color: pink'
Object.keys($(cool)); // => ['color']
let target = {};
let scopeGetter = scope();
let $scope = scopeGetter(target);
let scopeSomeGetter = scope('some');
let $scopeSome = scopeSomeGetter(target);
$scope === $scopeSome; // => false
$scopeSome === scopeGetter(target); // => true
$scopeSome === scope('some', target); // => true
typeof $scopeSome === 'object'; // => true
let $info = scope('info')
class Person {
set name(name: string){
$info(target).name = name;
}
equals(other: Person): boolean {
return $info(this).name === $info(other).name;
}
}
let person = new Person;
let person2 = new Person;
let person3 = new Person;
person.name = 'bob';
person2.name = 'alice';
person3.name = 'bob';
person.equals(person2); // => false
person2.equals(person3); // => false
person3.equals(person1); // => true
Note: It is based on es6 WeakMap
no need for polyfill (built-in library support).
License
Copyright © Yisrael Eliev, Licensed under the MIT license.