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