Show More
Commit Description:
submission report
Commit Description:
submission report
References:
File last commit:
Show/Diff file:
Action:
node_modules/es-abstract/2017/Set.js
| 32 lines
| 811 B
| application/javascript
| JavascriptLexer
|
r789 | 'use strict'; | |||
var GetIntrinsic = require('../GetIntrinsic'); | ||||
var $TypeError = GetIntrinsic('%TypeError%'); | ||||
var IsPropertyKey = require('./IsPropertyKey'); | ||||
var Type = require('./Type'); | ||||
// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw | ||||
module.exports = function Set(O, P, V, Throw) { | ||||
if (Type(O) !== 'Object') { | ||||
throw new $TypeError('Assertion failed: `O` must be an Object'); | ||||
} | ||||
if (!IsPropertyKey(P)) { | ||||
throw new $TypeError('Assertion failed: `P` must be a Property Key'); | ||||
} | ||||
if (Type(Throw) !== 'Boolean') { | ||||
throw new $TypeError('Assertion failed: `Throw` must be a Boolean'); | ||||
} | ||||
if (Throw) { | ||||
O[P] = V; // eslint-disable-line no-param-reassign | ||||
return true; | ||||
} else { | ||||
try { | ||||
O[P] = V; // eslint-disable-line no-param-reassign | ||||
} catch (e) { | ||||
return false; | ||||
} | ||||
} | ||||
}; | ||||