gpt4 book ai didi

javascript - 如何在 Javascript 命名空间中调用公共(public)函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:20:07 24 4
gpt4 key购买 nike

当我使用公共(public)方法 (myPublicMethod) 创建 JS 命名空间 (myNamespace) 时

js文件1.js

var myNamespace=(function() {

var myPublicMethod=function(){
alert("hello world");
}

return
{
myPublicMethod:myPublicMethod
};

})();

然后有一个单独的 .js 文件封装了它的方法

js文件2.js

(function(){
myNamespace.myPublicMethod();
})();

然后将这两个文件包含在一个html文件中

<script src="jsfile1.js"...>
<script src="jsfile2.js" ...>

当我尝试调用 myPublicMethod() 时,我收到一条错误消息,指出 myNamespace 不存在。是不是封装在jsfile2.js文件里了?

谢谢

最佳答案

函数未在您的命名空间中定义的原因是行

return
{
myPublicMethod:myPublicMethod
}

返回后插入一个隐含的分号,所以解释器看到的实际上是这样的:

return;
{
myPublicMethod:myPublicMethod
}

因此函数实际上没有返回任何内容,myNamespace 的值仍然是 undefined。解决方法很简单:只需将左大括号与 return 放在同一行即可:

return { 
myPublicMethod: myPublicMethod
};

(请注意,尾随分号不是严格必需的,但无论如何,如果您打算使用类似 minifier 的东西,这是一个好主意)

此外,您在第一个文件 is invalid 中定义函数的方式.应该是

var myNamespace = (function() {
...
})();

关于javascript - 如何在 Javascript 命名空间中调用公共(public)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com