2011-10-05 97 views
2

有沒有什麼辦法在JavaScript中創建\返回指向變量的指針?
一樣,在PHP中:指向JavaScript中變量的指針

function func() { 
    ..... 
    return &$result; 
} 

我有一個JS的功能,如:

function(...) { 
    x=document.getElements..... //x is HTML tag 
    if (x.localName=='input') return x.value //String variable 
    else if (x.localName=='textarea') return x.innerHTML //String variable 
} 

使用此功能,我可以從X獲取數據的副本,但不能更改源。
我想要改變它的可能性。

謝謝

回答

2

HEJ達尼 - 溴

你可以做這樣的事情

function(...) { 
var x = document.getElements..... //x is HTML tag 
if (x.localName=='input') return { 
    get: function() { return x.value }, 
    set: function(v) { x.value = v; } 
}; 
else if (x.localName=='textarea') return { 
    get: function() { return x.innerHTML }, 
    set: function(v) { x.innerHTML = v; } 
}; 
} 

所以來電者可以設置並獲取該值。 ps。使用VAR聲明本地變量

GL

+0

謝謝你的PS。 –

7

不,你不能返回一個指向字符串的指針。在Javascript中,對象被自動分配並通過引用傳遞,並且原語被複制。所以如果你return x;那麼你可以修改x.innerHTML,但是如果你返回x.innerHTML這個字符串將被複制。

0

原始類型按值傳遞。對象通過引用傳遞。我想x.innerHTML是一個字符串,所以它通過值傳遞。

看看這段代碼,就說明你通過引用傳遞對象:

function test(str){ 
return str; 
} 

var k = { txt : 'foo' }, 
    n = test(k); 

console.log(n.txt); 
k.txt = 'bar'; 
console.log(n.txt); 
0

這可能不是正是你所期待的,但還沒有提出來了又一個事情是,內部函數可以訪問它們的外部函數的變量:

function myFunc(){ 
    var x = "hello"; 
    myInnerFunc(); 

    function myInnerFunc(){ 
     //shows the variable of the outer function 
     console.log(x); 
    }; 

}; 

此外,您可以使用閉包,以節省外部函數的變量的狀態:

function myFunc2(){ 
    var x = "hello"; 
    var timesCalled = 0; 

    return function(){ 
     timesCalled++; 
     console.log(x + " called: " + timesCalled); 
    }; 

}; 

var fun = myFunc2(); 

fun(); //1 
fun(); //2 
fun(); //3 
+0

我不明白,你說的是什麼意思。它如何幫助我?我需要閱讀並更改value \ innerHTML,如下所示:getval('address')=「new value」; 。VAR1 = GETVAL( '地址')的長度; –