从另一个访问es6类中的所有方法

时间:2018-01-25 13:44:11

标签: javascript ecmascript-6 es6-class

我有两个课程:MyClass和CBook。我想从CBook类访问MyClass类的所有函数和变量。我怎么能这样做?

MyClass的

import $ from 'jquery';
import {CBook} from './book';

const path = "http://www.mypage.com";

class MyClass {

    constructor() {
        let _summaryPageUI = new CBook(this);
    }

    describeBook() {
        console.log('test');
    }

}

new MyClass();

export {MyClass};

我想访问CBook中MyClass的所有方法:

CBook

class CBook {
    constructor(myClass) {
        console.log(myClass);
    }
}

export {CBook};

5 个答案:

答案 0 :(得分:0)

我认为您正在寻找extends属性。请参阅以下文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/extends

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

class myClass extends CBook {
  ....
}

答案 1 :(得分:0)

class MyClass {
  constructor() {
    console.log("MyClass instantiated");
  }
  describeBook() {
    console.log("book described");
  }
}


class CBook extends MyClass {
  constructor() {
    super();
    console.log("CBook instantiated");
  }
}

然后您就可以:

const book = new CBook();
book.describeBook();

您将获得输出:

MyClass instantiated
CBook instantiated
book described

答案 2 :(得分:0)

构造函数是在创建类(对象)的新实例时立即调用的函数。这会初始化对象的初始属性和状态。正如XPX-Gloom所指出的,你使用extends关键字隐式地说'" CBook对象,在实例化时采用MyClass的全部或部分属性"。通过使用super(),您正在调用MyClass的构造函数。这个超级' keyword用于进行超级构造函数调用,并允许访问父方法。 example

答案 3 :(得分:0)

在ES6中,所有类实例方法都是公共的,因此您可以通过创建MyClass的实例并调用它的方法来访问它们:

class CBook {
  constructor(myClass) {
    this.myClass = myClass;
  }

  someMethod() {
    this.myClass.describeBook()
  }
}

答案 4 :(得分:0)

基于您正在使用的术语"功能" - 我想你想把你的函数定义为static,这样就可以在类而不是实例上调用它们:

定义:

class foo {
    static someFunc() { console.log("foo:someFunc") }
}

呼叫:

foo.someFunc();

控制台出局:

foo:someFunc

表示值

添加课后定义

foo.someValue = "myValue";

然后:

console.log(foo.someValue)

将输出:myValue