Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Overview
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... |
Availability
...
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
} |
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
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);
}
);
} |
Div | ||
---|---|---|
| ||
AvailabilityThis feature requires:
|
Div | ||
---|---|---|
| ||
See alsoRelated articles:
|