我有以下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);
答案 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
答案 2 :(得分:1)
这使得函数在测试时从另一个函数中变为全局函数:
function test()
{
window.$E = function() { alert('test'); };
}
test();
$E();
因此,要根据您的需求进行调整:
(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();