ES6 classes private member syntax [duplicate]

2019-01-18 15:02发布

This question already has an answer here:

I have a quick question. What's the cleanest and straightforward way to declare private members inside ES6 classes?

In other words, how to implement

function MyClass () {
  var privateFunction = function () {
    return 0;
  };

  this.publicFunction = function () {
    return 1;
  };
}

as

class MyClass {

  // ???

  publicFunction () {
    return 1;
  }
}

1条回答
Rolldiameter
2楼-- · 2019-01-18 15:22

It's not much different for classes. The body of the constructor function simply becomes the body of constructor:

class MyClass {
  constructor() {
    var privateFunction = function () {
      return 0;
    };

    this.publicFunction = function () {
      return 1;
    };
  }
}

Of course publicFunction could also be a real method like in your example, if it doesn't need access to privateFunction.

I'm not particularily advising to do this (I'm against pseudo privat properties for various reasons), but that would be the most straightforward translation of your code.

查看更多
登录 后发表回答