once.js 417 B

123456789101112131415161718192021
  1. var wrappy = require('wrappy')
  2. module.exports = wrappy(once)
  3. once.proto = once(function () {
  4. Object.defineProperty(Function.prototype, 'once', {
  5. value: function () {
  6. return once(this)
  7. },
  8. configurable: true
  9. })
  10. })
  11. function once (fn) {
  12. var f = function () {
  13. if (f.called) return f.value
  14. f.called = true
  15. return f.value = fn.apply(this, arguments)
  16. }
  17. f.called = false
  18. return f
  19. }