在ES6中将类绑定到Global Scope

乔尼·塞拉

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

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

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

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

MatíasFidemraizer

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

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

class Validator {}

window.Validator = Validator;

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

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

class Validator {}

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档