Get Accessor (Getter/Setter)


/ Published in: JavaScript
Save to your folder(s)

`$[gs]etter(obj, property)` returns `function() { return obj.__lookup[GS]etter__(property).apply(obj, Array.prototype.slice.call(arguments)) }`

`object.get[GS]etter(property)` returns `$[gs]etter(this, property)`

Useful for getting the getters and setters of objects like `location`, so you can do stuff like location.getSetter("hash") to get the native hash-changing function.

Example:

var foo = {a: 5}
foo.__defineSetter__("bar", function(x) { return x/this.a })
var fooBarSetter = foo.getSetter("bar") // $setter(foo, "bar") also works
fooBarSetter(40) == 8

var changeHash = location.getSetter("hash")
changeHash("test")
var getHash = location.getGetter("hash")
getHash() == location.hash
getHash() == "#test"

function changeInnerHTML(el, html) { return el.getSetter("innerHTML")(html) }
changeInnerHTML(document.body, "test")
document.getSetter("title")("Test")


Copy this code and paste it in your HTML
  1. function $setter(obj, prop) {
  2. return function() {
  3. return obj.__lookupSetter__(prop).apply(obj, Array.prototype.slice.call(arguments))
  4. }
  5. }
  6.  
  7. function $getter(obj, prop) {
  8. return function() {
  9. return obj.__lookupGetter__(prop).apply(obj, Array.prototype.slice.call(arguments))
  10. }
  11. }
  12.  
  13. Object.prototype.getSetter = function(prop) { return $setter(this, prop) }
  14. Object.prototype.getGetter = function(prop) { return $getter(this, prop) }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.