2017-11-09 1 views
1

저는 jQuery와 같은 작은 js 라이브러리를 만들기 위해 연습하고 있습니다. IIFE를 사용할 때 Todo, I created은 정의되지 않았습니다. 코드는 샘플이지만 실제로 어떤 일이 발생했는지 알지 못합니다. 누구든지 이걸 도와 줄 수 있니? 정말 고맙습니다!자체 생성 js 라이브러리 객체가 정의되지 않았습니다.

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); 

답변

1

귀하의 if 문제입니다. Todoundefined 아닌 function

if (typeof(window.Todo) === "undefined") 
+0

너무 감사합니다! 이 작품! –

1

이 줄은

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

항상 false를 반환합니다 경우에 따라서는 defineTodo()와 도도를 부착하지 않는, 확인을 변경합니다.
내 의견에 더 좋은 조건이 될 수있다 :

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

가 실행 예를 참조하십시오

(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

+0

정말 고마워요! 이 작품! –

관련 문제