Как передать строковое значение как ссылку в JavaScript и изменить его там

Как я могу передать строковое значение ссылкой в JavaScript.

Я хочу этот вид функциональности.

    //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"    
    }

Как сделать это.?

5
задан Robusto 14 July 2010 в 14:01
поделиться

3 ответа

В JS нельзя передать значение по ссылке. Вы можете создать объект с функцией, которая будет делать это за вас:

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;
    }

}

Затем вы можете использовать это в любом методе следующим образом:

function AnyProcedure() {

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

}

Каждый раз, когда вы вызываете append, строка Value будет добавляться. Т.е.

Если бы вы сделали:

append.Append(" Foo");

append.Value будет равно CheckingTextBox Foo.

4
ответ дан 14 December 2019 в 13:25
поделиться

Вам нужно вернуть String вместо 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"     
    } 
1
ответ дан 14 December 2019 в 13:25
поделиться

Создайте глобальную переменную (скажем, gblstrMain) вне функции TryAppend, а затем установите его значение равно strMain внутри функции.

    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"    
    }

Поскольку вы уделяете особое внимание «return true» в функции TryAppend, мы можем решить эту проблему с помощью этого обходного пути.

1
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: