2012-01-08 3 views
0

나는 OO JS를 배우기 시작하고 간단한 질문을 하나 (나는 실제 문제를 쉽게 풀었습니다).자바 스크립트 객체 리터럴 및 jquery 각

은 기본적으로 다음과 같은 경고는, 내가 그것을 3 개 가지 경고 상자

<body> 

    <div id="bob"> 
     <div>f</div> 
     <div>t</div> 
     <div>q</div> 
    </div> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script> 
    $(document).ready(function() { 

     var Person = { 
      name: $('#bob div').each(
       function(){ 
        $(this).text(); 
       } 
      )     
     } 
     alert(Person.name); 

    }); 
    </script> 

</body> 

많은 감사 모든 지침을 반환하려면 [개체 개체]를 반환합니다.

Adi. 대문자로 시작하는 자바 스크립트 이름에 (이 경우, Person가) 보통 (생성자 함수에 대한 즉, 기능을 예약되어,

var Person = { 
    alertNames: function() { 
     $('#bob div').each(
      function(){ 
       alert($(this).text()); 
      } 
     ); 
    }; 
} 
Person.alertNames(); 

주, 그래도 :

+0

코드는'$ ('# bob div'). each (...)'의 반환 값을 jQuery 객체 인'Person.name'에 할당합니다. –

답변

0

아마도 당신은 이런 식으로 뭔가를 할 수 new 키워드를 사용하여 새 인스턴스를 만드는 데 사용됩니다). 이름은 이므로 오해의 소지가 있으므로 일반적으로 유형은입니다. 당신이 진정으로 객체 지향 코드를 확인하려면

, 당신은 이런 식으로 뭔가를 시도 할 수 :

var Person = function(name) { 
    var container = $('#' + name); 

    this.alertNames: function() { 
     $('div', container).each(
      function(){ 
       alert($(this).text()); 
      } 
     ); 
    }; 
} 
var bob = new Person('bob'); 
bob.alertNames(); 

추천 도서 :

0

자바 스크립트 alert 상자는 당신이 반환하는 것이 아닙니다. 그것은 당신이 부르고 경고를 울리는 무엇인가입니다. 따라서 3 개의 경고가 필요하다면 alert 함수를 3 번 ​​호출해야합니다. 현재는 한 번만 호출합니다.

나는 당신이 시도하는 것이 선택자의 결과를 연결하는 것이라고 생각합니다. 이 경우 .each 대신 .map를 사용

var Person = { 
    name: $('#bob div').map(function() { 
     return $(this).text(); 
    }).get().join(',')     
}; 
alert(Person.name); 

또 다른 가능성은 .each 콜백 내부의 경고를 넣어하는 것입니다.

+0

콘텐츠를 연결하려면'.get(). join()'을 추가해야합니다. –

+0

@FelixKling, 좋은 지적. 답변을 고려하여 업데이트되었습니다. –