2012-02-23 20 views
5
var problemtest = function() { 

    var parameters; 

    return function (parameters) { 
     parameters = parameters; 
    } 
} 

var mysolutiontest = function() { 

    var parameters; 

    return function (parametersIn) { 
     parameters = parametersIn; 
    } 
} 

Esto es más una pregunta de convención de JavaScript.Convención de JavaScript: cómo asignar argumentos al ámbito principal

Normalmente tengo un código similar al de arriba. Una función toma argumentos y los asigna al alcance principal. Sin embargo, no puedo usarlo como en problemtest, ya que parameters que son argumentos ocultan parameters de problemtest.

En OO Programming podemos usar this, pero en JavaScript no puedo usar this, así que generalmente implemento una solución similar a mysolutiontest. Sin embargo, no estoy completamente satisfecho con esta solución. ¿Hay una mejor manera de hacer esto?

Respuesta

2

Normalmente utilizo _parameters como una convención. Esto proviene de mi pasado Java. Esto no está aislado de tu ejemplo o de Javascript. Cualquier lenguaje que no lo obligue a calificar las variables de cualquier ámbito adjunto lo llevará al mismo problema.

var mysolutiontest = function() { 
    var _parameters; 

    return function (parameters) { 
    _parameters = parameters; 
    } 
} 

personas también he tenido un uso p_parameters a nombres de los argumentos de la función de calidad. Este no es uno de mis favoritos aunque

var mysolutiontest = function() { 
    var parameters; 

    return function (p_parameters) { 
    parameters = p_parameters; 
    } 
} 

My 2c.

4

Si sus funciones necesitan compartir algunas propiedades, a continuación, asignándoles a un objeto es un modelo elegante y común:

var object = { 

    property: ['item'], 

    methodOne: function() { 
     console.log(this.property); 
    }, 

    methodTwo: function() { 
     console.log(this.property); 
    } 

}; 

object.methodOne(); // ['item'] 
object.methodTwo(); // ['item'] 

Para más información sobre cómo 'esto' funciona dentro de un objeto - http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/

+0

+1, pero probablemente debería señalar que el uso de 'this.property' puede provocar un comportamiento inesperado para aquellos que no están familiarizados con el funcionamiento de los objetos JS. Ejemplo: use 'object.methodOne' como un manejador de eventos. –

+0

De acuerdo. He editado y agregado la excelente publicación de Angus Croll sobre el tema –

+0

@ LiorCohen-'<... onclick =" function() {object.methodOne();} "...>'. – RobG

Cuestiones relacionadas