在ES6中将类绑定到全局范围

时间:2016-08-05 19:26:30

标签: javascript jquery validation ecmascript-6

我试图在 ES6 中重新创建jQuery验证器而不使用任何jQuery,并且我尝试重新创建它时遇到了障碍&# 39;使用全局范围添加验证方法的功能,即如果您在任何地方调用Validator.addMethod,它将在ValidatorValidator中运行相关功能。在import添加方法。

我似乎无法在ES6中执行此操作,因为我不允许将我的类导出到全局范围,我的类永远无法从窗口对象访问,就像例如 jQuery ,没有这个,任何想要添加新验证函数的人都必须Validator.addMethod('required', function(element, value){ return value.length > 0; }) 一个新函数来添加它类,我不能简单地调用

gets

在加载验证器类后我想要的任何文件,所以我的问题是,这在ES6中真的不可能或者我错过了什么吗?我已经知道它不是最好的做法,并且愿意接受建议,但即使对于那些不熟悉ES6的人来说,这个想法也很容易使用。

1 个答案:

答案 0 :(得分:2)

ES6及以上版本旨在避免污染全球范围。您的担忧只是解决JavaScript中许多恶劣的错误编码实践

顺便说一句,你总是可以访问window对象并添加一个与你的类相同的属性:

class Validator {}

window.Validator = Validator;

...因为一个类仍然是一个由基于类的语法包装的构造函数和原型继承。

如果您要在浏览器和NodeJS中分发您的库,您可能希望这样做:

class Validator {}

var global = window || global;
global.Validator = Validator;
顺便说一句,如果你想以正确的方式做事,你可以使用通用模块定义来分发你的库。 Learn more at the official GitHub repository of Universal Module Definition (UMD)