2011-07-06 2 views
8

전역 자바 스크립트 함수를 정의했습니다.자바 스크립트 함수를 정의하지 않거나 제거하는 방법은 무엇입니까?

 function resizeDashBoardGridTable(gridID){ 
    var table = document.getElementById('treegrid_'+gridID); 
     ..... 
    } 

이 함수를 몇 번 사용하면 프로 시저 코드를 다시 호출해야하므로이 함수를 제거 (또는 정의되지 않음)하고 싶습니다. 누군가가이 메소드를 호출하려고하면 아무 것도 할 필요가 없습니다.

지금은이 기능을 변경하지 마십시오.

이렇게 다시 정의 된이 함수는 한 가지 방법 일 수 있습니다.

 function resizeDashBoardGridTable(gridID){ 
     empty,do nothing 
    } 

. 더 좋은 방법이 있니?

+1

"프로 시저 코드를 다시 호출해야합니다."그 의미는 무엇입니까? – lonesomeday

+1

그냥 해보세요 :'resizeDashBoardGridTable = function() {}' – Cipi

+0

이 방법이 효과가 있다면 사용해 보시겠습니까?JS 함수를 호출하십시오 : 'eval ('function resizeDashBoardGridTable (gridID) {;}')' '정의하지 않습니다'하지만 아무 것도하지 않습니다. – Angad

답변

5

사용 방법은 var일까요?

// define it 
var myFunction = function(a,b,c){ 
    console.log('Version one: ' + [a,b,c].join(',')); 
} 
myFunction('foo','bar','foobar'); // output: Version one: foo,bar,foobar 

// remove it 
myFunction = null; 
try { myFunction(); console.log('myFunction exists'); } 
catch (e) { console.log('myFunction does not exist'); } 

// re-define it 
myFunction = function(d,e,f){ 
    console.log('Version two: ' + [d,e,f].join(',')); 
} 
myFunction('foo','bar','foobar'); // output: Version two: foo,bar,foobar 

OUTPUT : 당신이 세계를 선언하고 있기 때문에 당신은 그냥 그 이름을 가진 윈도우 함수를 다시 정의 할 필요가 있으므로

[10:43:24.437] Version one: foo,bar,foobar 
[10:43:24.439] myFunction does not exist 
[10:43:24.440] Version two: foo,bar,foobar 
+0

고마워,이 기능을 변경하는 것이 모름. 변경하면 위험 할 수있다. – Jammy

+0

@ Jammy : 저는 변수로서 당신이 모든 것을 제어 할 수 있다고 지적했습니다. 또는'윈도우를 사용할 수 있습니다. '(글로벌로 정의 된 경우) jcolebrand가 언급 한대로 그렇게 할 수 있습니다. –

+0

@ Jammy : @Brad가 제안한대로 다시 정의하면 약간의 변화가 있음을주의하십시오. 특히, 함수가 처음에 정의 될 때 * (코드에서와 같이 전역 범위에 입력 할 때 또는 나중에 코드의 단계별 실행이 Brad의 코드에서 할당에 도달 할 때) 변경됩니다. 많은 시간은 중요하지 않지만 괜찮습니다. 정의를 변경할 필요가 없습니다. 함수를 선언하는 방식으로 심볼을 재정의 할 수 있습니다. –

6

, 그것의 window 객체에 첨부합니다.

window.resizeDashBoardGridTable = function() { 
    return false; 
} 

다른 방법으로 당신은 다른 값으로 다시 정의 할 수 또는 당신이 원하는 경우도 null로, 그러나 적어도 그것에게 기능을 유지하여, 그것은 여전히 ​​손해에 "소위"할 수 있습니다.

여기에 기능을 재정의하는 live example이 있습니다. (thanks TJ)

내가 창 개체에 다시 정의한다는 것을 지적하는 또 다른 이유는 예를 들어 해당 멤버가있는 경우 해당 함수가있는 다른 개체가있는 경우, 같은 방법으로 회원 :

var myObject = {}; 
myObject.myFunction = function(passed){ doSomething(passed); } 
/// 
/// many lines of code later after using myObject.myFunction(values) 
/// 
/// or defined in some other function _on_ myObject 
/// 
myObject.myFunction = function(passed){} 

그것은 창 개체 또는 다른 개체에 상관없이 같은 방식으로 작동합니다.

+1

명확한 설명을 위해 실례를 추가했습니다. –

+0

@ T.J.Crowder - 몇 년이 지났지 만, 슬프게도 JSBin 예제 (http://jsbin.com/imejob)가 삭제 (만료)되었습니다. –

3

가장 간단한 방법은 함수를 변수로 처리하여 null로 설정하는 것입니다. var으로 선언하지 않아도 작동합니다. IE에서이를 확인했습니다.

resizeDashBoardGridTable = null 
0

기능은이 같은 익명의 자기 호출 기능을 사용하여 1 회 호출 할 필요가있는 경우 : 당신이 var 및 설정에 당신이 그것을 저장하는 함수를 여러 번 호출해야하는 경우

(function test(){ 
    console.log('yay i'm anonymous'); 
})(); 

을 완료되면 null으로 변경하십시오.

참고 : 이름을 test와 같이 익명으로 지정할 필요는 없습니다. 다음과 같이 사용할 수도 있습니다 :

(function(){ 
    console.log('test'); 
})(); 

이름을 익명으로 사용하는 이유는 가독성을 높이기 위해서입니다.

관련 문제