UNPKG

1.49 kBJavaScriptView Raw
1var _Object$defineProperty = require("../core-js/object/define-property.js");
2
3var _Object$getOwnPropertyDescriptor = require("../core-js/object/get-own-property-descriptor.js");
4
5var _Reflect$set = require("../core-js/reflect/set.js");
6
7var superPropBase = require("./superPropBase");
8
9var defineProperty = require("./defineProperty");
10
11function set(target, property, value, receiver) {
12 if (typeof Reflect !== "undefined" && _Reflect$set) {
13 set = _Reflect$set;
14 } else {
15 set = function set(target, property, value, receiver) {
16 var base = superPropBase(target, property);
17 var desc;
18
19 if (base) {
20 desc = _Object$getOwnPropertyDescriptor(base, property);
21
22 if (desc.set) {
23 desc.set.call(receiver, value);
24 return true;
25 } else if (!desc.writable) {
26 return false;
27 }
28 }
29
30 desc = _Object$getOwnPropertyDescriptor(receiver, property);
31
32 if (desc) {
33 if (!desc.writable) {
34 return false;
35 }
36
37 desc.value = value;
38
39 _Object$defineProperty(receiver, property, desc);
40 } else {
41 defineProperty(receiver, property, value);
42 }
43
44 return true;
45 };
46 }
47
48 return set(target, property, value, receiver);
49}
50
51function _set(target, property, value, receiver, isStrict) {
52 var s = set(target, property, value, receiver || target);
53
54 if (!s && isStrict) {
55 throw new Error('failed to set property');
56 }
57
58 return value;
59}
60
61module.exports = _set;
\No newline at end of file