Overview
Adds a new accessor (getter/setter) or data (value) property to any object along with setting it's enumerable, configurable and read-only flags as desired...Availability
util.js v0.1 and above
Syntax
try { oObj.uAddProperty(nMask,sKey,vVal_fGet,fSet); } catch(e) { // likely a TypeError if an existing non-configurable property of the same sKey is defined }
Where oObj is any object in the Javascript environment.
Parameters
Parameter | Type | Mandatory | Description | Util.js version |
---|---|---|---|---|
nMask | Number constant | A constant describing the property and its flags: | 0.1 | |
sKey | String | The name (key) of the property as a string. | 0.1 | |
vVal_fGet | Value or Function | If you're defining a data property, this parameter can be any Javascript value, function or object, etc. If you're defining an accessor property (getter/setter) then this parameter is the getter function. | 0.1 | |
fSet | Function | If you're defining an accessor property (getter/setter) then this parameter is the setter function (or null if you're property is read-only). | 0.1 |
Return value
Returns whatever Javascript's defineProperty method returns, or throws an error.
Example
Add .isAlly, .isEnemy and .isMe properties to player data objects
for (var p=0; p<playerData.length; p++) { playerData[p].uAddProperty( ACCESSOR_NORMAL, "isAlly", allianceExistsBetween.uCurry(me,p) ); playerData[p].uAddProperty( ACCESSOR_NORMAL, "isEnemy", function() { return !this.isAlly; } ); var player = p; playerData[p].uAddProperty( ACCESSOR_NORMAL, "isMe", function() { return (player==me); } ); }
See also
- defineProperty – I based uAddProperty on code examples from this MDN page
- TypeError – this will be thrown if an existing non-configurable sKey property exists on the object
- Function.uCurry() – create a new function that's based on an existing function but with some parameters pre-defined