1

我有以下 javascript 来制作函数$E

window.onload它会引发$E未定义的错误。

所以我的问题是如何$E在全局范围内使其可见,以便我可以在(function(){})();函数之外访问它

window.onload = function() {
   $E("bhavik").warn();
}
(function() {
                function $E(s) {
                    return new ge(s)
                }
                function ge(sel) {
                    this.arg = sel;
                    return this;
                }
                ge.proto = ge.prototype = {warn: function() {
                        alert(this.arg)
                    }};
                ge.proto.hi=function(){alert("hi "+this.arg)}
                $E("bhavik").hi();
            })(window);
4

5 回答 5

3

要使变量在全局范围内可见,请将其设置在window对象上。例如:

function $E(s) {
   return new ge(s);
}
window.$E = $E;
于 2013-01-05T06:19:51.763 回答
1

Javascript:如何创建全局函数和变量

http://www.w3schools.com/jsref/jsref_obj_global.asp

您应该window为您设置一个变量以function使其可访问。这些链接将有所帮助。您也可以在外部定义函数并使其全局化。

如需详细研究,

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope

javascript函数范围

于 2013-01-05T06:21:06.697 回答
1

这使得该函数在测试时从另一个函数中成为全局函数:

function test()
{
  window.$E = function() { alert('test'); };
}

test();
$E();

http://jsfiddle.net/WEg4b/

因此,要使其适应您的需求:

(function() {

                function ge(sel) {
                    this.arg = sel;
                    return this;
                }

                window.$E = function $E(s) { return new ge(s); };

                ge.proto = ge.prototype = {warn: function() {
                        alert(this.arg)
                    }};
                ge.proto.hi=function(){alert("hi "+this.arg)}
                $E("bhavik").hi();
            })(window);
于 2013-01-05T07:36:08.880 回答
0

只需在匿名函数之外声明它。通过在模块内声明所有代码,您正在创建一个与所有其他代码隔离的新范围,因此,如果您希望它在全局上下文中可用,只需在该函数之外声明它。

于 2013-01-05T06:22:07.160 回答
0

尝试改变函数声明的顺序

(function() {
            function $E(s) {
                return new ge(s)
            }
            window.$E = $E;
            function ge(sel) {
                this.arg = sel;
                return this;
            }
            ge.proto = ge.prototype = {warn: function() {
                alert(this.arg)
            }};
            ge.proto.hi=function(){alert("hi "+this.arg)}
            $E("bhavik").hi();
        })(window);
window.onload = function() {
    $E("bhavik").warn();
于 2013-01-05T06:46:54.557 回答