2017-09-21 2 views
0

window.alert가 네이티브 함수가 아닌 것으로 판명 된 것을 제외하고는 비슷한 질문을 가진 다른 스레드를 보았습니다. 내가 제대로 작동하지 재정의 기능을 알 수있는 바와 같이 byId() 그냥 새로운 document.getElementById네이티브 js 함수 복제

+0

var byId = document.getElementById; document.getElementById = function(id){ if(id === "second"){ console.log('Second found'); } return byId.call(document, id); } document.getElementById('first').innerHTML = 'First changed !!!'; document.getElementById('second').innerHTML = 'Second changed !!!';
<p id='first'>First</p> <p id='second'>Second</p>

에 유래 오류 냄새. 이걸 가지고 뭘하고 싶니? – walv

+0

원래 JS 오브젝트 참조가 중단되면 원래 오브젝트가 재 지정됩니다. – Redu

답변

1

를 호출 호출, 내가 document.getElementById을 변경할 수 있도록 할 때 byId 제외

var byId = document.getElementById 

document.getElementById = function(id){ 
    if(id == "some id"){ 
     //do stuff here 
    } 
    return byId(id); 
} 

document.getElementById 그냥 링크입니다 : 이것은 내가하고 싶은 것입니다. 함수의 참조를 byId에 할당하면 컨텍스트가 손실됩니다. documentbyId 함수의 컨텍스트로 byId.call(document, id)을 통해 전달해야합니다.

+0

감사합니다, 이것은 내가 찾고 있었던 바로 그 것이 었습니다! – BaleineBleue

관련 문제