Pau*_*est 40 javascript annotations
是否有JavaScript注释?
当然JavaScript没有它们,但是有其他库或建议的语言扩展,例如
@type {folder.otherjsmodule.foo}
function(){
foo = folder.otherjsmodule.foo();
...
return foo;
};
Run Code Online (Sandbox Code Playgroud)
Ben*_*aum 30
更新:现在存在一个适用于JavaScript的装饰器的提议.它目前是第1阶段,您可以在BabelJS和traceur中使用它.
有几个库,比如前面提到的闭包在注释中使用注释,闭包编译器甚至可以在编译时尽可能多地断言类型.然而,这些并不是传统意义上的实际"注释".
与"明显"的答案不同 - 是的,有JavaScript注释,有些运行时支持它们.
例如
(function(){
"use strict";
//code in strict mode
})();
Run Code Online (Sandbox Code Playgroud)
这将导致函数内部执行严格的模式.最近在Mozilla我们得到了:
(function(){
"use asm";
//code in asmjs
})();
Run Code Online (Sandbox Code Playgroud)
这将导致代码以asmjs模式运行,优化进行转换.
是的,虽然面向方面的编程和注释在JS中非常罕见,但完全可以编写一个接受函数的库,查看它.toString,找出这些注释的结束位置并执行相关代码然后执行函数的其余部分.
例如
an(function(){
"validate user"; // this could be something you implement yourself
"use strict";
})();
Run Code Online (Sandbox Code Playgroud)
创建一个执行此操作的库非常简单,它需要一些讨厌的代码(使用Function构造函数并将函数解析为字符串)但它肯定是可能的.它甚至可以在新的开发工具中调试,它几乎和原生函数一样快.
建议的语法可能是:
an.add("assertEmail",function(x){
if(!emailRegex.test(x){
throw new Error("Invalid call to function - expected email got",x);
}
});
// later on
an(function subscribeToNewsLetter(x){
"assertEmail";
var xhr = new XMLHttpRequest();
//send email
});
Run Code Online (Sandbox Code Playgroud)
Chr*_*ian 12
我知道这是旧的.但ES2016提供了装饰器(在Javascript中称为装饰器).很容易制作自己的装饰器,或者你可以扩展我的装饰模块,让你轻松包装/注入你的自定义代码.
https://github.com/cmartin81/decorator-wrap
| 归档时间: |
|
| 查看次数: |
45652 次 |
| 最近记录: |