35 lines
1.4 KiB
JavaScript
35 lines
1.4 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
var d = require("d")
|
||
|
, NativeSymbol = require("es5-ext/global").Symbol;
|
||
|
|
||
|
module.exports = function (SymbolPolyfill) {
|
||
|
return Object.defineProperties(SymbolPolyfill, {
|
||
|
// To ensure proper interoperability with other native functions (e.g. Array.from)
|
||
|
// fallback to eventual native implementation of given symbol
|
||
|
hasInstance: d(
|
||
|
"", (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill("hasInstance")
|
||
|
),
|
||
|
isConcatSpreadable: d(
|
||
|
"",
|
||
|
(NativeSymbol && NativeSymbol.isConcatSpreadable) ||
|
||
|
SymbolPolyfill("isConcatSpreadable")
|
||
|
),
|
||
|
iterator: d("", (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill("iterator")),
|
||
|
match: d("", (NativeSymbol && NativeSymbol.match) || SymbolPolyfill("match")),
|
||
|
replace: d("", (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill("replace")),
|
||
|
search: d("", (NativeSymbol && NativeSymbol.search) || SymbolPolyfill("search")),
|
||
|
species: d("", (NativeSymbol && NativeSymbol.species) || SymbolPolyfill("species")),
|
||
|
split: d("", (NativeSymbol && NativeSymbol.split) || SymbolPolyfill("split")),
|
||
|
toPrimitive: d(
|
||
|
"", (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill("toPrimitive")
|
||
|
),
|
||
|
toStringTag: d(
|
||
|
"", (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill("toStringTag")
|
||
|
),
|
||
|
unscopables: d(
|
||
|
"", (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill("unscopables")
|
||
|
)
|
||
|
});
|
||
|
};
|