如何在全局范围内显示我的功能

时间:2013-01-05 06:13:05

标签: javascript anonymous-function

我有以下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);

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

Javascript : How to create global functions & variables

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 function scope

答案 2 :(得分: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);

答案 3 :(得分:0)

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

答案 4 :(得分: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();