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

在ES6中将类绑定到Global Scope

如何解决《在ES6中将类绑定到GlobalScope》经验,为你挑选了1个好方法。

我试图在ES6中 重新创建jQuery验证程序而不使用任何jQuery,并且在尝试重新创建它的功能时遇到了障碍,即使用Global范围添加验证方法,也就是说,如果您Validator.addMethod在任何地方调用,它将运行中的关联函数,Validator并向中添加方法Validator

我似乎无法在ES6中执行此操作,因为不允许将类导出到Global范围,从窗口对象(例如jQuery无法访问我的类,没有这个人想要添加新的验证函数必须要有import一个新函数才能添加它的类,而我不能简单地调用

Validator.addMethod('required', function(element, value){
  return value.length > 0;
})

在加载验证器类之后我想要的任何文件上,所以我的问题是,这真的在ES6中是不可能的,还是我缺少了什么?我已经知道这不是最佳实践,可以接受建议,但是即使对于不熟悉ES6的人来说,该想法也易于使用。



1> Matías Fidem..:

ES6及更高版本的设计旨在避免污染全局范围。您所关心的只是JavaScript中许多邪恶的糟糕编码实践的解决方案

顺便说一句,您始终可以访问window对象并添加一个与您的类相同的方式调用的属性:

class Validator {}

window.Validator = Validator;

...因为类仍然是构造函数,并且被基于类的语法包裹着原型继承。

如果要在浏览器和NodeJS中分发库,则可能需要这样做:

class Validator {}

var global = window || global;
global.Validator = Validator;

顺便说一句,如果您想以正确的方式做事,则可以使用通用模块定义来分发您的库。在通用模块定义(UMD)的官方GitHub存储库中了解更多信息。

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