Javascript 在ES6中将类绑定到全局范围
我试图在不使用任何jQuery的情况下在ES6中重新创建jQuery validator,在尝试使用全局范围重新创建其添加验证方法的功能时遇到了一些障碍,也就是说,如果您在任何地方调用Javascript 在ES6中将类绑定到全局范围,javascript,jquery,validation,ecmascript-6,Javascript,Jquery,Validation,Ecmascript 6,我试图在不使用任何jQuery的情况下在ES6中重新创建jQuery validator,在尝试使用全局范围重新创建其添加验证方法的功能时遇到了一些障碍,也就是说,如果您在任何地方调用validator.addMethod,它将运行验证器中的相关函数,并向验证器添加一个方法 在ES6中,我似乎无法做到这一点,因为我不允许将类导出到全局范围,我的类永远无法从窗口对象访问,比如jQuery,没有它,任何想要添加新验证函数的人都必须导入一个新函数来添加它类,我不能简单地打电话 Validator.ad
validator.addMethod
,它将运行验证器中的相关函数
,并向验证器
添加一个方法
在ES6中,我似乎无法做到这一点,因为我不允许将类导出到全局范围,我的类永远无法从窗口对象访问,比如jQuery,没有它,任何想要添加新验证函数的人都必须导入一个新函数来添加它类,我不能简单地打电话
Validator.addMethod('required', function(element, value){
return value.length > 0;
})
在加载验证器类之后,我想在任何文件上,所以我的问题是,这在ES6中真的是不可能的,还是我遗漏了什么?我已经知道这不是最好的做法,并愿意接受建议,但这个想法很容易使用,即使对于不熟悉ES6的人也是如此。ES6及以上版本的设计旨在避免污染全球范围。您所关心的只是JavaScript中许多有害的编码实践的解决方案 顺便说一句,您始终可以访问
窗口
对象,并添加一个与类相同的属性:
class Validator {}
window.Validator = Validator;
…因为类仍然是一个构造函数,原型继承由基于类的语法包装
如果要在浏览器和NodeJ中分发库,可能需要执行以下操作:
class Validator {}
var global = window || global;
global.Validator = Validator;
顺便说一句,如果您想以正确的方式进行操作,可以使用通用模块定义分发库 那么这个验证器在前端运行?你在哪里写的?它是同构的吗?@duxfox——它只在前端运行,我有一个单独的PHP验证器在服务器上运行,或者使用
globalThis