指向JavaScript中的变量

时间:2011-10-05 11:14:45

标签: javascript dom

有没有办法在JavaScript中创建\返回指向变量的指针?
比如,在PHP中:

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获取数据的副本,但不能更改源 我希望有可能改变它。

由于

4 个答案:

答案 0 :(得分:7)

不,你不能返回指向字符串的指针。在Javascript中,对象被自动分配并通过引用传递,并复制基元。因此,如果您return x;,则可以修改x.innerHTML,但如果您返回x.innerHTML,则会复制字符串。

答案 1 :(得分:2)

Hej Dani-Br

你可以做这样的事情

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

答案 2 :(得分: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);

答案 3 :(得分: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