Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Excerpt |
---|
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... |
Syntax
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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
} |
obj.addProp(mask, key, val_get[, set]); |
Where obj is any object in the Javascript environment.
Parameters
Parameter | Type | Mandatory | Description | Util.js version | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
nMaskmask | Number constant | A constant describing the property and its flagsdescriptor settings:
| 1.0.1 | |||||||||
sKeykey | String | The name (key) of the property as a string. | 1.0.1 | |||||||||
vValval_fGetget | Value Variant 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. | 1.0.1 | |||||||||
fSetset | Function | If you're defining an accessor property (getter/setter) then this parameter is the setter function (or null if you're property. If your accessor is read-only ), you don't need to specify a setter function. | 1.0.1 |
Return value
Returns whatever Javascript's defineProperty method returns, or throws an error.
Value | Type | Notes | API Version |
---|---|---|---|
<object> | Object | If successful, the addProp() method returns the modified object. | 1.0 |
<error> | TypeError | An error will be thrown if:
| 1.0 |
Example
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
playerData.primaryTarget = null; for (var p=0; p<playerData.length; p++) { // Add a hidden and read-only .id property that returns the player number playerData[p].uAddProperty( DATA_READONLY_HIDDEN, "id", p ); // Add a read-only .isAlly property that returns true if this player is an ally // Note: No setter function (fSet) means read only playerData[p].uAddProperty( ACCESSOR_NORMAL, "isAlly", allianceExistsBetween.uCurry(me,p) ); // Add a read-only .isMe property that returns true if this player is me playerData[p].uAddProperty( ACCESSOR_NORMAL, "isMe", function() { return (this.id==me); } ); // Add a read-only .isEnemy property that returns true if this player is an enemy playerData[p].uAddProperty( ACCESSOR_NORMAL, "isEnemy", function() { return (!(this.isAlly || this.isMe)); } ); // Add a read-write .isPrimaryTarget boolean property playerData[p].uAddProperty( ACCESSOR_NORMAL, "isPrimaryTarget", function() { return (playerData.primaryTarget == this.id); }, function(bool) { playerData.primaryTarget = (!!bool) ? this.id : null; return (!!bool); } ); }// See https://warzone.atlassian.net/wiki/display/EGG/Function+Manipulation // For info on curry() and wraps() var isAlly = allianceExistsBetween.curry(me); var NOT = funciton(bool) { return !bool; } var isEnemy = NOT.wraps(isAlly); // Iterate the playerData array and add properties to objects playerData.forEach(function(player, id) { // using .addAccessor() would be more concise playerData[id].addProp( ACCESSOR_HIDDEN, "isAlly", isAlly.curry(id) ); playerData[id].addProp( ACCESSOR_HIDDEN, "isEnemy", isEnemy.curry(id) ); // using .addConst() would be more concise playerData[id].addProp( DATA_HIDDEN_READONLY, "isMe", (id == me) ); }); playerData[somePlayer].isAlly; // true or false // etc... |
Div | ||||||
---|---|---|---|---|---|---|
| ||||||
AvailabilityThis feature requires:
Requires:
|
Div | ||||
---|---|---|---|---|
| ||||
ContentsJump to:
|
Div | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Property DefinitionsTopics:
|
Div | ||
---|---|---|
| ||
See alsoRelated articles:
|