Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / Javascript

Simple cross browser JavaScript get set

5.00/5 (1 vote)
14 Feb 2012CPOL 19.1K  
Simple cross browser JavaScript get set
I was doing research on JavaScript to see if there was finally a get set definition. And much to my surprise, there was:

JavaScript
function class(){
  var propertyName;

  this.__defineGetter__('propertyName', function(){
    return value;
  });

  this.__defineSetter__('propertyName', function(val){
    value = val;
  });
}


I was a little bothered by the formatting with both being functions instead of properties. But not that big of a deal. However, when I try it out and it doesn't work, I did some more research and discovered that it was only supported by FF and everything else was considered "legacy."

The formatting of this new get-set definition gave me an idea though, based on some of my coding that uses assumed function arguments.

JavaScript
function class(){
  var propertyName;

  this.propertyName = function(val){

      if(typeof val != 'undefined'){
        propertyName = val;
      }
      else{
        return propertyName;
      }
  }
}


I have tested this in Chrome, Internet Explorer, Safari and Firefox. The way it works:

JavaScript
var class = new class();
class.propertyName('fooBar');

alert(class.propertyName());


When you call the function, it detects if an argument is passed. If it is, it sets the private variable and returns nothing; if it isn't, then it returns the current value of the private variable.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)