您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

1 行
2.1 KiB

  1. {"ast":null,"code":"'use strict';\n\nvar global = require('./_global');\n\nvar each = require('./_array-methods')(0);\n\nvar redefine = require('./_redefine');\n\nvar meta = require('./_meta');\n\nvar assign = require('./_object-assign');\n\nvar weak = require('./_collection-weak');\n\nvar isObject = require('./_is-object');\n\nvar validate = require('./_validate-collection');\n\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function wrapper(get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n}; // 23.3 WeakMap Objects\n\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true); // IE11 WeakMap frozen keys fix\n\n\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n\n var result = this._f[key](a, b);\n\n return key == 'set' ? this : result; // store all the rest on native weakmap\n }\n\n return method.call(this, a, b);\n });\n });\n}","map":null,"metadata":{},"sourceType":"script"}