JavaScript protected
by Rohit Sharma
JavaScript
'use strict';
class PersonProtected {
constructor(name) {
this._name = name;
return new Proxy(this, {
get(target, name) {
if (name.startsWith('_')) {
throw new Error('Accessing to a private property is not allowed');
} else {
return target[name];
}
}
});
}
get name() {
return this._name;
}
set name(name) {
this._name = name;
}
greeting(person) {
return `hi ${person.name}`;
}
}
const vasya = new PersonProtected('Vasya');
const petya = new PersonProtected('Petya');
console.log(vasya.greeting(petya));