2011-07-06 28 views
8

que define una función global Javascript:¿Cómo se define o elimina una función javascript?

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

Después se utilizó esta función un par de veces, quiero eliminar (o no definido) esta función debido a que el código de procedimiento debe ser llamado de nuevo. si alguien intenta llamar a este método, no necesitamos hacer nada.

no cambio manera esta función en este momento.

por lo re-define esta función puede ser una manera:

function resizeDashBoardGridTable(gridID){ 
     empty,do nothing 
    } 

Gracias. ¿Alguna mejor manera?

+1

"el código de procedimiento debe ser llamado de nuevo" ¿Qué significa eso? – lonesomeday

+1

Simplemente hazlo: 'resizeDashBoardGridTable = function() {}' – Cipi

+0

Prueba si esto funciona?Llame a la función JS: 'eval ('función resizeDashBoardGridTable (gridID) {;}')' No lo 'undefine' pero sí lo hace. – Angad

Respuesta

5

cómo sobre el uso de un 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 

SALIDA:

[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

Gracias, no sé cambiar esta función, cambiarla supondrá un riesgo. – Jammy

+0

@Jammy: solo estaba señalando que como variable tienes control total. Alternativamente, puede usar la ventana ' '(si se define globalmente) como jcolebrand mencionado y hazlo de esa manera, también. –

+0

@Jammy: redefiniéndolo como @Brad sugiere que * cambia * un poco las cosas, tienes razón en ser cauteloso. Específicamente, cambia * cuando * esa función se define inicialmente (al ingresar al alcance global, como en su código, o más tarde cuando la ejecución paso a paso del código llega a la asignación, en el código de Brad). Muchas veces no importa, pero está bien, no hay necesidad de cambiar tu definición, aún puedes redefinir el símbolo de la forma en que declaras la función. –

6

Porque estás declarando que a nivel mundial, que está asociado al objeto window, por lo que sólo tiene que redefinir la función de ventana con ese nombre.

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

Alternativamente se podría redefinir a cualquier otro valor o incluso en nulo si quería, pero al menos manteniendo una función, que todavía puede ser "llamado" sin detrimento.

Aquí hay una live example de redefinición de la función. (gracias TJ)

Un motivo adicional para señalar que lo estoy redefiniendo en el objeto ventana es, por ejemplo, si tiene otro objeto que tiene esa función como uno si sus miembros, podría definirlo en el miembro de la misma manera:

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){} 

funciona de la misma de cualquier manera, ya sea en el objeto ventana o algún otro objeto.

+1

Agregué un ejemplo en vivo, solo por claridad. –

+0

@ T.J.Crowder: sé que han pasado algunos años, pero, por desgracia, el ejemplo de JSBin (http://jsbin.com/imejob) se ha eliminado (ha caducado). –

3

El enfoque más simple es para ajustar la función (tratarla como una variable) a null. Esto funciona incluso si no lo declara como var. Verificado esto en IE.

resizeDashBoardGridTable = null 
0

Si las funciones necesita ser llamado 1 vez que utilice una función de auto invocación anónima como esto:

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

Si tiene que llamar a los tiempos de función múltiple se almacenan en un var y establecer a null cuando haya terminado.

Nota: Usted no tiene que nombrar una función anónima como lo he denominado prueba. También puede usarlo así:

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

La razón por la que nombro mis funciones anónimas es para una mayor legibilidad.

Cuestiones relacionadas