匿名自引用函数闭包在JavaScript中如此盛行的事实是否表明JavaScript是不完整的规范?我们看到了这么多:
(function () { /* do cool stuff */ })();
并且我想一切都取决于品味,但是当您只想要一个私有名称空间时,这看起来不像是垃圾吗?JavaScript无法实现包和适当的类吗?
与同样基于ECMAScript的ActionScript 3相比,您可以获得
package com.tomauger {
import bar;
class Foo {
public function Foo(){
// etc...
}
public function show(){
// show stuff
}
public function hide(){
// hide stuff
}
// etc...
}
}
与我们在JavaScript中执行的卷积相反(这来自jQuery插件编写文档):
(function( $ ){
var methods = {
init : function( options ) { // THIS },
show : function( ) { // IS },
hide : function( ) { // GOOD },
update : function( content ) { // !!! }
};
$.fn.tooltip = function( method ) {
// Method calling logic
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
}
};
})( jQuery );
我很高兴知道这个问题很容易演变成关于首选项和编程风格的咆哮,但我真的很想知道您经验丰富的程序员对此有何感觉以及它是否自然,例如学习新语言的不同特质或糊涂,就像一些尚未实现的基本编程语言组件的解决方法?