generate-name.js 789 B

12345678910111213141516171819202122232425262728
  1. "use strict";
  2. var d = require("d");
  3. var create = Object.create, defineProperty = Object.defineProperty, objPrototype = Object.prototype;
  4. var created = create(null);
  5. module.exports = function (desc) {
  6. var postfix = 0, name, ie11BugWorkaround;
  7. while (created[desc + (postfix || "")]) ++postfix;
  8. desc += postfix || "";
  9. created[desc] = true;
  10. name = "@@" + desc;
  11. defineProperty(
  12. objPrototype, name,
  13. d.gs(null, function (value) {
  14. // For IE11 issue see:
  15. // https://connect.microsoft.com/IE/feedbackdetail/view/1928508/
  16. // ie11-broken-getters-on-dom-objects
  17. // https://github.com/medikoo/es6-symbol/issues/12
  18. if (ie11BugWorkaround) return;
  19. ie11BugWorkaround = true;
  20. defineProperty(this, name, d(value));
  21. ie11BugWorkaround = false;
  22. })
  23. );
  24. return name;
  25. };