2011-12-22 6 views
0

아래 스 니펫은 다른 동료가 제공 한 더 큰 라이브러리의 함수입니다. 이 함수는 프로토 타입의 다른 메서드에서 호출됩니다. 그래서jquery 함수 매개 변수, 객체 및 변수

<spellResult .....> 
    <c o=0 l=1 s=1>string string string /> 
    <c o=10 l=1 s=1>string string string /> 
</spellResult> 
parseResults: function(results) { 
    var self = this; 
    this.results = []; 
    var spellcheckFound = $(results).find('c'); 
    $(results).find('c').each(function() { 
     var $this = $(this), 
      offset = $this.attr('o'), 
      length = $this.attr('l'); 
     self.results.push({ 
      word: self.text.substr(offset, length), 
      suggestions: $this.text().split(/\s/) 
     }); 
    }); 
    this.displayResults(); 
}, 

:

이 이
  1. 가 어떻게 results 매개 변수 this.results 다를 않습니다 results 매개 변수는 다음과 같이 보입니다 XML의 문자열입니다?
  2. this.results = []; 행이 결과 매개 변수를 지우지 않습니까?
  3. self.results이 다른 객체/변수이거나 다른 객체/변수 중 하나에 대한 참조입니까?
  4. 또 하나의 초보자 질문 - 여기에 $(results)은 무엇입니까?

나는이 일을하기 위해 노력하고있어 내 머리카락을 당겨 왔어, 그래서 어떤 도움을 주셔서 감사합니다.

+0

'console.log()'묶음을 각 객체가 어떻게 변하는 지 확인하십시오. 예를 들어'this.results = []; 다음에'console.log (self.results)'를 추가하여 비어 있는지 확인하십시오. – Jasper

+0

self는 예약어입니다. 나쁜, 나쁜, 나쁜 에스터. 나쁜. 편집 : 확인 어쩌면 예약 아니지만 쉽게 window.self와 혼동 – jbabey

+0

' 문자열 문자열 문자열 />'확실히 XML이 맞지 않지만 올바르게 게시하지 않은 것 같습니다. 게시하기 전에 명백한 구문 오류가 코드에 없는지 확인해야합니다. –

답변

0

이를 위해 무엇 : this.results = [];

var self = this; 
this.results = []; 

당신은 array을 비 웁니다.

results이 정확히 무엇인지 모르기 때문에 적절한 대답을 제공하기에는 정보가 너무 적습니까?

재스퍼가 말했듯이,에 무슨 일이 일어날 지보고 console.logconsole.log(typeof results)console.log(results) 일부 적절한 디버깅을 수행

"하나 개 더 초보자 질문 -이 모든에 $ (결과) 무엇인가?".

$(results)results의 대상입니다. 기본적으로 $(results).find('c').each(function() {은 요소 cresults에 있고 루프를 통과합니다.

0

어떻게 '결과'매개 변수가 'this.results'와 다른가요?

this.resultsthis의 속성이라는 결과를 의미한다. this의 의미는 함수가 호출 된 방법에 따라 다릅니다. results은 처리중인 XML입니다. 그것을 results이라고 부르는 것은 나쁜 이름입니다. 더 좋은 이름은 resultsXML입니다.

은 'this.results = [];'행이 아닙니다. 결과 매개 변수를 지우시겠습니까?

예; 이 코드는 this.results을 처리 결과로 바꾸고 XML을 처리합니다.

은 'self.results'가 다른 개체/변수이거나 다른 개체/변수 중 하나에 대한 참조입니까?self 이후

this이 할당되고,이 self.resultsthis.results 같은 객체를 참조한다. 변수 내에서 self 변수를 사용하는 것은 코드 내에 this 값을 캡처하는 일반적인 기술입니다. each에 대한 호출은 처리되는 XML 요소 인 this에 새로운 의미를 부여하므로 each으로 전화하기 전에 selfthis으로 초기화 된 것입니다.

그리고 하나 더 많은 초보자 질문 -이 모든 것에서 $ (결과)는 무엇입니까?

XML 내에서 jQuery 스타일 탐색을 사용하도록 XML 주위에 jQuery 객체 래퍼가 작성됩니다.

+0

* "...또는 함수 자체 "* : 매우 드물다."this는 함수가 호출되는 방식에 따라 결정되며, 독립형 함수로 호출되면 일반적으로 전역 객체를 참조한다. 함수 자체가'func.call (func)'을 호출해야 할 것입니다. –

+0

고마워요, @FelixKling. 더 정확한 것으로 수정 될 것입니다. – Jacob

0

1. 결과 매개 변수는 this.results와 어떻게 다릅니 까?

결과는 함수에 전달 된 로컬 변수입니다. this.results는 "this"라는 객체의 속성으로, 함수 자체입니다 (함수를 포함하여 자바 스크립트의 모든 내용이 객체입니다)

2. 행이 this.results = []이 아닌가요? 결과 매개 변수를 지우시겠습니까?

this.results = []; 새로운 빈 배열 객체를 선언하기위한 속기입니다. 객체에 새 속성을 선언 할 때 "var"키워드를 사용할 필요가 없습니다. 이름이 충돌하면 자동으로 이전 속성을 덮어 쓰거나 이전 속성을 덮어 씁니다.

3. self.results는 다른 개체/변수이거나 다른 개체/변수에 대한 참조입니까?

왜냐하면 self와 this는 동일한 객체에 대한 참조이므로 this.results와 self.results는 동일한 속성입니다. 그렇지 않으면 self.results.push (...)라고 말할 때 "객체 예상"오류가 발생합니다.

4. 하나 이상의 새내기 질문 -이 모든 것에서 $ (결과)은 무엇입니까?

$ (결과) 당신의 자바 스크립트 객체 결과라고 복용하고 당신이 그런 .find()와 .each()는에

로 JQuery와 프로토 타입 기능에 액세스 할 수있는 JQuery와 객체에 포장된다 사이드 노트 - 게시 한 코드를 다시 작성하십시오. 내 눈이 아파. 특히 spellcheckFound 변수를 초기화하고 spellcheckFound를 사용하는 대신 다음 줄에서 다시 처리하는 모든 처리 작업을 수행하는 부분 : P