JavaScript Object Privacy

JavaScript Object Privacy

Feb 13, 2021·

2 min read

Play this article


An object or properties sometimes shouldn't be altered, accessed, or updated. In such a situation, they should be private.

We can indicate an object or property name is private by prepending an underscore (_) to it.

See the example below:

const bankAccount = {
    _accountNumber: 16234950

The issue of using _ is that an object or property can still be mutable (changed).

bankAccount.accountNumber = 16224971;
bankAccount.accountNumber; // 16224971

See another example below:

const person = {
  name: 'Bello',

  set _setPerson(name) {
    if (typeof === 'string') { = name;
    } else { 
      "Give a valid name";

person._setPerson = 'John';
console.log( // John

The _ only waves a flag to other developers to not alter it.

JavaScript now has a solution, introduced in ES12 (ECMAScript 2021).

Instead of the underscore (_), the hash symbol can be used (#). # is used most of the time in classes.

class Person {
  get name() {
    return "Bello"
  set name(value) {}

  get #age() {
    return 27
  set #age(value) {}

const obj = new Person();
console.log(, obj.age); // Bello undefined

For the above example to work, you might need to update your browser.

More on classes later.


Learn on Skillshare