Attach functions as non enumerable properties to the prototype of any object.
Please not that Attach to prototype is currently under development and not yet suited for production
import { constructAttachToPrototype } from "attatch-to-prototype"
const attachToArray = constructAttachToPrototype(Array.prototype/*, options*/)
attachToArray("removeByValue", function(value) {
const index = this.indexOf(value)
if (index === -1) return
this.splice(index, 1)
})
const ar = ["a", "b", "c"]
ar.removeByValue("b")
console.log(ar) // ["a", "c"]
attachToArray("last", {
get() {
return this[this.length-1]
}
set(to) {
return this[this.length-1] = to
}
})
let ar = [1, 2, 3]
ar.last // return 3
ar.last = 0 // return 0
console.log(ar) // [1, 2, 0]
Just a different syntax to access getter / setter. Use Attach / apply depending on your coding conventions.
import { constructApplyToPrototype } from "attatch-to-prototype"
const attachToArray = constructApplyToPrototype(Array.prototype/*, options*/)
attachToArray("last", {
get() {
return this[this.length-1]
}
set(to) {
return this[this.length-1] = to
}
})
let ar = [1, 2, 3]
ar.last() // return 3
ar.last(0) // return 0
console.log(ar) // [1, 2, 0]
The generic functionality is also available on apply
All feedback is appreciated. Create a pull request or write an issue.