当前位置:  开发笔记 > 编程语言 > 正文

如何在其实例上访问es-2015类方法?

如何解决《如何在其实例上访问es-2015类方法?》经验,为你挑选了1个好方法。

比如我有

class MyClass {

  constructor() {
    this.myMethod = this.myMethod.bind(this);
    // ... some more code
    // return what?
  }

  myMethod() {
   this.myMethod2();
   // do stuff ...
  }

  myMethod2() {
    // do stuff 2 ...
  }
}

然后我会做这样的事情

let obj = new MyClass();

而我想要做的就是访问myMethodobj

obj.myMethod();

显然,如果在其代码中myMethod调用其他MyClass方法(如myMethod2),我希望一切按预期工作.所以我假设构造函数应该返回某种对象并包含它的公共方法(可以访问对象的私有方法),但是如何做呢?



1> Alnitak..:

在ES6类中拥有私有方法的唯一方法(我知道)是将它们定义为构造函数的内部函数:

class MyClass {
    constructor() {
        let privateVar = 'foo';
        let privateMethod = () => {
            return privateVar;
        }
    }
}

在构造函数之外定义的任何方法都是隐式公共的.

可以访问私有变量或方法的唯一公共方法是在构造函数的词法范围内类似定义的方法,并作为以下属性附加到当前实例this:

constructor() {
    let privateVar = 'foo';
    let privateMethod = () => {
        return privateVar;
    }
    this.publicMethod = () => {
        return privateMethod();
    }
}

(注意,使用箭头函数意味着this内部this.publicMethod总是指向当前实例而不需要.bind调用)

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有