DocumentFragment
개체를 확장하려고했습니다. 이 확장 된 DocumentFragment에서 불법 호출이 발생하는 이유는 무엇입니까?
function DocFragment() {
this.addHTML = function(html) {
var div = document.createElement("div");
div.innerHTML = html;
while(div.firstChild) this.appendChild(div.firstChild);
};
}
DocFragment.prototype = document.createDocumentFragment();
var doc = new DocFragment();
doc.addHTML("<b>after</b><i>list</i>");
그러나 나는
this.appendChild
줄에
Illegal Invocation
오류가 발생했습니다. 호스트 객체를 확장하는 것이 좋지 않다는 것을 알고 있습니다. 왜이 오류가 나타나는 지 궁금합니다.
function addHTML(doc, html)
같은 일부 함수에 전달하는 것 외에도 DocumentFragment에 몇 가지 메서드를 추가하는 다른 적절한 방법이 있습니까?
:
또는 당신은 이것에 대해 충격을받는 경우에, 당신은과 같이 (jQuery를 또는 밑줄 또는 무언가에) 확장 시도 할 수 있습니다. com/whats-wrong-with-extend-the-dom /) DOM 프로토 타입 객체의 노출이 보장되지 않기 때문에'DocumentFragment.prototype.addHTML'을 코딩하는 것은 좋지 않습니다 (IE9를 포함한 대부분의 브라우저는 이러한 인터페이스를 일반 객체로 구현하지만). "jQuery 접근법"에서는 모든 DocumentFragment 멤버를 노출하기가 어렵습니다. 물론, 열거 할 수있는 것들을 반복 할 수는 있지만 다시 DOM 레벨 2에서 보장 할 수는 없습니다. 유용한 답변을 주셔서 감사합니다.하지만 여전히 슬프다 ... –