Allow native Symbols as computed property names (#6705)
The for-in loop in helpers.defineEnumerableProperties doesn't iterate over Symbols. If Object.getOwnPropertySymbols exists, include the discovered values when defining properties.
This commit is contained in:
parent
d8b4073536
commit
2d8fdf3045
@ -278,6 +278,20 @@ helpers.defineEnumerableProperties = template(`
|
|||||||
if ("value" in desc) desc.writable = true;
|
if ("value" in desc) desc.writable = true;
|
||||||
Object.defineProperty(obj, key, desc);
|
Object.defineProperty(obj, key, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Symbols are not enumerated over by for-in loops. If native
|
||||||
|
// Symbols are available, fetch all of the descs object's own
|
||||||
|
// symbol properties and define them on our target object too.
|
||||||
|
if (Object.getOwnPropertySymbols) {
|
||||||
|
var objectSymbols = Object.getOwnPropertySymbols(descs);
|
||||||
|
for (var idx in objectSymbols) {
|
||||||
|
var sym = objectSymbols[idx];
|
||||||
|
var desc = descs[sym];
|
||||||
|
desc.configurable = desc.enumerable = true;
|
||||||
|
if ("value" in desc) desc.writable = true;
|
||||||
|
Object.defineProperty(obj, sym, desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
return obj;
|
return obj;
|
||||||
})
|
})
|
||||||
`);
|
`);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user