self创建js库对象是未定义的

时间:2017-11-09 23:45:44

标签: javascript jquery

我正在练习构建像jQuery这样的小型js库。使用IIFE时,我创建的对象:Todo未定义。代码是样本,但实际上不知道发生了什么。有人可以帮我这个吗?非常感谢你!

HTML:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="todo.js"></script>
</head>
<body>
<script type="text/javascript">
    Todo.print(); //Todo is not defined
</script>
</body>
</html>

JS:

(function (window) {
    "use strict";
    function defineTodo () {
        var Todo = {};
        Todo.print = function () {
            console.log("To do");
        };
        return Todo;
    }

    if (typeof(defineTodo) === "undefined") {
            window.Todo = defineTodo();
    }
})(window);

2 个答案:

答案 0 :(得分:1)

您的public void moveAllAndBounce() { for (Bubble bubble : bubbles) for(int p=0; p<count; p++) bubble.moveIt(); } 是问题所在。更改它以检查ifTodo而不是undefined,即。

function

答案 1 :(得分:1)

这一行

if (typeof(defineTodo) === "undefined") {

将始终返回false,因此您不会使用defineTodo()附加Todo 我认为更好的条件可能是:

 window.Todo = window.Todo || defineTodo();

查看正在运行的示例:

&#13;
&#13;
(function(window) {
  "use strict";

  function defineTodo() {
    var Todo = {};
    Todo.print = function() {
      console.log("To do");
    };
    return Todo;
  }
  window.Todo = window.Todo || defineTodo();
})(window);

Todo.print(); //Todo is not defined
&#13;
&#13;
&#13;