javascriptpointers

Are there pointers in javascript?


I used C++ before and I realized that pointers were very helpful. Is there anything in javascript that acts like a pointer? Does javascript have pointers? I like to use pointers when I want to use something like:

var a = 1;
var b = "a";
document.getElementById(/* value pointed by b */).innerHTML="Pointers";

I know that this is an extremely simple example and I could just use a, but there are several more complex examples where I would find pointers very useful. Any ideas?


Solution

  • No, JS doesn't have pointers.

    Objects are passed around by passing a copy of a reference. The programmer cannot access any C-like "value" representing the address of an object.

    Within a function, one may change the contents of a passed object via that reference, but you cannot modify the reference that the caller had because your reference is only a copy:

    var foo = {'bar': 1};
    
    function tryToMungeReference(obj) {
        obj = {'bar': 2};  // won't change caller's object
    }
    
    function mungeContents(obj) {
        obj.bar = 2;       // changes _contents_ of caller's object
    }
    
    tryToMungeReference(foo);
    foo.bar === 1;   // true - foo still references original object
    
    mungeContents(foo);
    foo.bar === 2;  // true - object referenced by foo has been modified