首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ES6类存储

ES6类存储
EN

Stack Overflow用户
提问于 2016-04-06 01:18:10
回答 3查看 870关注 0票数 0

我只是找不到对声明的ES6类的引用存储在哪里,我本希望它们出现在window对象中,但它们并没有出现在那里。

我不认为这是ES6 classes : what about instrospection?的副本,因为他要求的是类的存在检查,我想要的是可用类的列表。

例如:

代码语言:javascript
复制
class Test {
    constructor() {

    }
}

window.Test // undefined

我想要的是扩展我的类的所有类的列表

为了澄清一下,我有一个类似于下面这样的结构:

代码语言:javascript
复制
class Base {
    constructor(components) {
        for(let component of components) {
            window[component](); // window.Test2 not defined
        }
    }

    start() {
        new this();
    }
}

class Test2 extends Base {
    constructor() {
        super();
    }
}

class Test extends Base {
    constructor() {
        super(['Test2','Test2']);
    }
}

Test.start();

这只是我的结构的一个抽象,简而言之,我必须在super(['Test2', 'Test2'])中使用字符串

目前,我正在做这样的事情

代码语言:javascript
复制
Base.register(Test2);

每一节课,我都想摆脱它。

EN

回答 3

Stack Overflow用户

发布于 2016-04-06 01:22:42

您可以使用Class expressions将它们存储在某种类型的数组中,但如果我是您,我可能不会这么做。

代码语言:javascript
复制
var Test = class Test {
   constructor() {

   }
}

allClasses.push(Test);
票数 0
EN

Stack Overflow用户

发布于 2016-04-06 01:25:54

JavaScript6中引入了JavaScript类,它们是ECMAScript现有的基于原型的继承之上的语法糖。类语法并没有为JavaScript引入新的面向对象的继承模型。JavaScript类提供了更简单、更清晰的语法来创建对象和处理继承。

基本上,ES6类被编译成普通的老式Javascript函数。您可以将它们“存储”在window对象中,但这是一个主要的陷阱,因为您正在扼杀ES6引入的整个模块模式。

票数 0
EN

Stack Overflow用户

发布于 2016-04-06 01:26:36

如果你想要一个类的“模块”,理论上你可以这样做:

代码语言:javascript
复制
// some-class.js

export default class SomeClass {}

然后:

代码语言:javascript
复制
// another-class.js

export default class AnotherClass {}

和你的入口文件:

代码语言:javascript
复制
// index.js

import SomeClass from './some-class.js' // extensions optional; here just for clarity
import AnotherClass from './another-class.js'

export default {
  SomeClass,
  AnotherClass
}

如果您将所有这些都嵌入到同一目录中(我们将该目录称为example),那么您可以在需要的任何地方导入整个模块:

代码语言:javascript
复制
// something-that-requires-your-module.js

// this will by default enter through the `index.js` file of your `example` directory
import Example from './example';

console.log(Example.SomeClass);
console.log(Example.AnotherClass);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36432992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档