Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8394313
es.reflect.set.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
es.reflect.set.js
View Options
var
$
=
require
(
'../internals/export'
);
var
call
=
require
(
'../internals/function-call'
);
var
anObject
=
require
(
'../internals/an-object'
);
var
isObject
=
require
(
'../internals/is-object'
);
var
isDataDescriptor
=
require
(
'../internals/is-data-descriptor'
);
var
fails
=
require
(
'../internals/fails'
);
var
definePropertyModule
=
require
(
'../internals/object-define-property'
);
var
getOwnPropertyDescriptorModule
=
require
(
'../internals/object-get-own-property-descriptor'
);
var
getPrototypeOf
=
require
(
'../internals/object-get-prototype-of'
);
var
createPropertyDescriptor
=
require
(
'../internals/create-property-descriptor'
);
// `Reflect.set` method
// https://tc39.es/ecma262/#sec-reflect.set
function
set
(
target
,
propertyKey
,
V
/* , receiver */
)
{
var
receiver
=
arguments
.
length
<
4
?
target
:
arguments
[
3
];
var
ownDescriptor
=
getOwnPropertyDescriptorModule
.
f
(
anObject
(
target
),
propertyKey
);
var
existingDescriptor
,
prototype
,
setter
;
if
(
!
ownDescriptor
)
{
if
(
isObject
(
prototype
=
getPrototypeOf
(
target
)))
{
return
set
(
prototype
,
propertyKey
,
V
,
receiver
);
}
ownDescriptor
=
createPropertyDescriptor
(
0
);
}
if
(
isDataDescriptor
(
ownDescriptor
))
{
if
(
ownDescriptor
.
writable
===
false
||
!
isObject
(
receiver
))
return
false
;
if
(
existingDescriptor
=
getOwnPropertyDescriptorModule
.
f
(
receiver
,
propertyKey
))
{
if
(
existingDescriptor
.
get
||
existingDescriptor
.
set
||
existingDescriptor
.
writable
===
false
)
return
false
;
existingDescriptor
.
value
=
V
;
definePropertyModule
.
f
(
receiver
,
propertyKey
,
existingDescriptor
);
}
else
definePropertyModule
.
f
(
receiver
,
propertyKey
,
createPropertyDescriptor
(
0
,
V
));
}
else
{
setter
=
ownDescriptor
.
set
;
if
(
setter
===
undefined
)
return
false
;
call
(
setter
,
receiver
,
V
);
}
return
true
;
}
// MS Edge 17-18 Reflect.set allows setting the property to object
// with non-writable property on the prototype
var
MS_EDGE_BUG
=
fails
(
function
()
{
var
Constructor
=
function
()
{
/* empty */
};
var
object
=
definePropertyModule
.
f
(
new
Constructor
(),
'a'
,
{
configurable
:
true
});
// eslint-disable-next-line es/no-reflect -- required for testing
return
Reflect
.
set
(
Constructor
.
prototype
,
'a'
,
1
,
object
)
!==
false
;
});
$
({
target
:
'Reflect'
,
stat
:
true
,
forced
:
MS_EDGE_BUG
},
{
set
:
set
});
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jun 4, 7:23 PM (1 w, 17 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3363608
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment