2010-07-14 10 views
5

¿Cómo puedo pasar un valor de cadena por referencia en javascript.Cómo pasar un valor de cadena como referencia en javascript y cambiarlo allí

Quiero este tipo de funcionalidad.

//Library.js 
    function TryAppend(strMain,value) 
    { 
    strMain=strMain+value; 
    return true; 
    } 

    //pager.aspx 

    function validate() 
    { 
    str="Checking"; 
    TryAppend(str,"TextBox"); 
    alert(str); //expected result "Checking" TextBox 
    //result being obtained "Checking"  
    } 

Cómo hacer esto. ?

+0

http://stackoverflow.com/questions/1308624/pass-a-string-by-reference-in-javascript –

+1

@haim evgi: Ya vi esa pregunta. Pero esa pregunta fue muy confusa para mí. No obtuve What ShowMe porque parece ser una variable global. Y no quiero usar variable global. –

+0

'strMain' es una variable local (en el contexto de la primera función). –

Respuesta

4

No se puede pasar un valor por referencia en JS. Se puede crear un objeto con una función para hacer esto para usted:

function TryAppend(originalValue) { 

    // Holds the value to return 
    this.Value = originalValue; 

    // The function joins the two strings 
    this.Append = function (append) { 
     this.Value+=append; 
     return true; 
    } 

} 

entonces usted puede utilizar esto en cualquier método de la siguiente manera:

function AnyProcedure() { 

    var str = "Checking"; 
    var append = new TryAppend(str); 
    if (append.Append("TextBox")) { 
     alert(append.Value); // Will give "CheckingTextBox" 
    } 

} 

Cada vez que llame a anexar, la cadena de valor se anexado a. Es decir.

Si a continuación hizo:

append.Append(" Foo"); 

append.Value sería igual CheckingTextBox Foo.

+0

¿Cómo obtuviste strMain en myObject como myObject.strMain –

+0

¿Funcionará si ambas funciones están en diferentes archivos js? –

+0

Sí. Siempre que ambos archivos js sean referencias en la página, podrán verse entre sí. – GenericTypeTea

1

Debe devolver el Cadena en lugar de true !!

function TryAppend(strMain,value) { 

    strMain=strMain+value; 

    return strMain; //you need return the 'String Value' to use in it another method 

    } 


    //pager.aspx 


    function validate() { 

    str="Checking"; 

    str = TryAppend(str,"TextBox"); 

    alert(str); //expected result "Checking" TextBox 

    //result being obtained "Checking"  
    } 
+0

Tengo otro propósito debido al cual no puedo devolver la cadena –

1

Crear una variable global (digamos gblstrMain) fuera del TryAppend función y luego establecer su valor a strMain dentro de la función.

var gblstrMain; 

function TryAppend(strMain,value) 
    { 
    strMain=strMain+value; 
    gblstrMain = strMain; 
    return true; 
    } 

    //pager.aspx 

    function validate() 
    { 
    str="Checking"; 
    TryAppend(str,"TextBox"); 
    str = gblstrMain; 
    alert(str); //expected result "Checking" TextBox 
    //result being obtained "Checking"  
    } 

Como usted es particular acerca de "return true" en la función TryAppend, podemos lograrlo con esta solución.

Cuestiones relacionadas