Property Getter / Setter Techniques (v29)

Revision 29 of this benchmark created by nobuoka on


Description

Testing various techniques for creating getters / setters in JavaScript.

Preparation HTML

<script>
  var obj = {
    prop: 0
  };

  var obj1 = {
    _prop: 0,
    getProp: function() {
      return this._prop;
    },
    setProp: function(value) {
      this._prop = value;
    }
  };

  var obj2 = {
    _prop: 0,
    get prop() {
      return this._prop;
    },
    set prop(value) {
      this._prop = value;
    }
  };

  var obj3 = {
    _prop: 0
  }
  Object.defineProperty(obj3, "prop", {
    get: function() {
      return this._prop;
    },
    set: function(val) {
      this._prop = val;
    }
  });

  var obj4 = {
    _prop: 0
  }
  Object.defineProperties(obj4, {
    prop: {
      get: function() { return this._prop },
      set: function(val) { this._prop = val }
    }
  });

  var obj5 = {
    _prop: 0
  }
  Object.defineProperties(obj5, {
    prop: {
      get: function() { return this._prop },
      set: function(val) { this._prop = val }
    }
  });
  Object.seal(obj5);
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Methods
obj1.setProp(obj1.getProp() + 1);
ready
get / set
obj2.prop = obj2.prop + 1;
ready
Object.defineProperty
obj3.prop = obj3.prop + 1;
ready
defineProperties
obj4.prop = obj4.prop + 1;
ready
defineProperties (object is sealed)
obj5.prop = obj5.prop + 1;
ready
Property
obj.prop = obj.prop + 1;
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.