이것은 Crockford의 JavaScript에서 온 코드입니다 : 좋은 부분.DOM 트리 재귀 호출
var results = [];
var walkDOM = function (node,func) {
func(node); //What does this do?
node = node.firstChild;
while(node) {
walkDOM(node,func);
node = node.nextSibling;
}
};
나는 func(node)
을 제외한 코드를 이해합니다. 요점은 func
함수의 매개 변수로 node
을 전달하는 것이지만 브라우저가이 방법을 어떻게 이해할 수 있을까요? (는 document.body) {...}
walkDOM(document.body,function(att) {
node.getAttribute(att);
results.push(node);
});
전달 func
walkDOM
기능 (AT & T)를 처리합니다 - : 함수가이 같이 읽을 수라고 너무 -
node
및
func
무엇이든 될 수있다 - 아무 의미가 없어요. 그렇다면 왜 Crockford는 func (노드)를 포함하도록 선택 했습니까?
*
예 지정된 태그 이름 모든 DOM 요소의 수를 리턴하는 방법 일 수도 DOM은 논쟁으로 언급했다. 함수는 속성 이름을받을 것으로 예상하므로 적절하지 않습니다. – user113716
@ patrick_dw - 여전히 func (노드)의 표기법을 이해하지 못합니다. 개발자가 그것을'function (node)'으로 대체 할 예정인가? 그리고 그렇지 않다면'func (노드)'가 브라우저에 어떻게 의미가 있을까요? – dopatraman
브라우저가 그것을 이해할 필요가 없습니다. 'walkDOM'에 전달 된 함수를 작성한 개발자 만이 그것을 이해할 필요가 있습니다. DOM을 걷고 모든 * 텍스트 노드 *를 대상으로하고 텍스트를 "patrick dw is so good good"*로 바꾼다면 내가 통과 한 함수에 그 논리를 배치 할 것입니다. 'walkDOM'은 각 노드를 * your * 함수 (한 번에 하나씩)로 전달할 것이고, * your * 함수는 그 노드로 무언가를 할 책임이 있습니다. – user113716