javascript - 为什么我的命名空间未定义?

标签 javascript

我有一段简单的代码。当我按下按钮时,我想更改该按钮的颜色。当我按下这个按钮时,我得到的当前错误是“无法读取未定义的属性‘changeColor’”。我不明白我哪里出错了。我编写这段代码的目的是不过度污染全局命名空间,因为我打算添加更多代码。

 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
 <title> </title>
 <style>
    #wrap{
        margin-top: 30px;
        margin-left: 30px;
    }
    .btn{
        font-size: 20px;
        width: 65px;
        height: 45px;
    }

</style>

</head>

<body>
<div id="wrap">
<button id="btn1" onclick="pub.changeColor('#66FFFF')"    class="btn">btn1</button>
<button id="btn2" class="btn">btn2</button>
</div>

我的 JS 文件:

var pub = (function(){
    var changeColor = function(element, color){
    element.style.backgroundColor = color;

    }
})();

最佳答案

因为你没有返回任何东西,所以 pub 的值是未定义的。更好:

var pub = (function(){
  return {
    changeColor: function(element, color) {
      element.style.backgroundColor = color;
    }
  }; 
})();

您现在可以使用在 IIFE 内部声明的局部变量,这些变量对于 IIFE 本身的代码是私有(private)的。您返回的对象的属性最终对您的 pub 模块的用户可见。

关于javascript - 为什么我的命名空间未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32553848/

相关文章:

javascript - 从 inAppBrowser 设置的 localStorage 值未显示在外部 - Cordova

javascript - react MUI : Persistent + Responsive drawer

javascript - sap ui5中是否可以拖放3D对象

javascript - 即使填写并检查了所有字段后,表单也不会提交

javascript - 将随机数组转换为顺序数组

php - 如何正确地将 php 数组分配给 javascript 数组

javascript - 刷新时的随机图像

javascript - angularJS orderBy 的不同箭头

javascript - 如何使用变量访问键/值对?

javascript - Jquery,插件未识别/调用