jQuery 스타일 개체 클래스를 만들려고합니다.
function obj(id){
if (this.__proto__.constructor !== obj) {
return new obj(id);
}
this.element = document.getElementById(id);
this.remove = function(){
this.element.parentNode.removeChild(this.element);
}
this.offset = function(){
return this.element.getBoundingClientRect();
}
}
obj(id).offset() // defined
obj(id).removeChild() //undefined
obj(id).appendChild() // undefined
obj(id).remove() // undefined
문제가 생겼습니다. jQuery 객체는와 같은 Javascript DOM 객체로 사용할 수도 $('#someid').innerHTML
있지만 내 객체입니다. 이 개체 클래스에 메서드가 없는지 동적으로 확인한 다음 DOM 개체를 반환하는 솔루션에 대해 생각하고 return this.element
있습니다.
어떻게 할 수 있습니까? 아니면 더 좋은 아이디어가 있습니까?
jQuery 객체는 다음과 같은 Javascript DOM 객체로도 사용할 수 있습니다.
$('#someid').innerHTML
아니, 할 수 없습니다. innerHTML
또한있을 것 undefined
입니다. jQuery 객체는 요소 집합을 둘러싼 래퍼입니다. 할 수 있습니다 $('#someid')[0].innerHTML
(접근 자 참고 [0]
).
...이 객체 클래스에 메소드가 없는지 확인합니다 ...
함수의 존재를 테스트하려면 다음을 사용할 수 있습니다 typeof
.
if (typeof obj.method === "function")
일부 이전 버전의 브라우저에 특정 호스트가 제공하는 기능을 위해, 당신이 얻을 수 있다는 것을 참고 "object"
대신에 "function"
당신이 가능하도록 그래서.
하지만 함수를 사용 하는 곳에서 그렇게해야 합니다.
이 개체 클래스에 메서드가 존재하지 않는지 동적으로 확인한 다음 DOM 개체가 this.element를 반환하는 솔루션에 대해 생각하고 있습니다.
이것은 나쁜 생각입니다. 대신 기본 요소에 액세스하는 방법을 제공하십시오 (jQuery가 수행하는 방식). ES6의 프록시 로 가능 하지만 아직 널리 사용되지는 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다