Version 1
[yaffs-website] / node_modules / core-js / library / modules / es6.reflect.set.js
1 // 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
2 var dP             = require('./_object-dp')
3   , gOPD           = require('./_object-gopd')
4   , getPrototypeOf = require('./_object-gpo')
5   , has            = require('./_has')
6   , $export        = require('./_export')
7   , createDesc     = require('./_property-desc')
8   , anObject       = require('./_an-object')
9   , isObject       = require('./_is-object');
10
11 function set(target, propertyKey, V/*, receiver*/){
12   var receiver = arguments.length < 4 ? target : arguments[3]
13     , ownDesc  = gOPD.f(anObject(target), propertyKey)
14     , existingDescriptor, proto;
15   if(!ownDesc){
16     if(isObject(proto = getPrototypeOf(target))){
17       return set(proto, propertyKey, V, receiver);
18     }
19     ownDesc = createDesc(0);
20   }
21   if(has(ownDesc, 'value')){
22     if(ownDesc.writable === false || !isObject(receiver))return false;
23     existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
24     existingDescriptor.value = V;
25     dP.f(receiver, propertyKey, existingDescriptor);
26     return true;
27   }
28   return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
29 }
30
31 $export($export.S, 'Reflect', {set: set});