object.addProp()

(info) This AI is still in early stages of development.

object.addProp()

Adds a new accessor (getter/setter) or data (value) property to any object, setting it's enumerable, configurable and read-only flags as desired...

 

Syntax

obj.addProp(mask, key, val_get[, set]);

Where obj is any object in the Javascript environment.

Parameters

Parameter

Type

Mandatory

Description

Util.js version

Parameter

Type

Mandatory

Description

Util.js version

mask

Number constant

A constant describing the property descriptor settings:

1.0

key

String

The name (key) of the property as a string.

1.0

val_get

Variant or

Function

If you're defining a data property, this parameter can be any Javascript value, function or object.

If you're defining an accessor property (getter/setter) then this parameter is the getter function.

1.0

set

Function

If you're defining an accessor property (getter/setter) then this parameter is the setter function.

If your accessor is read-only, you don't need to specify a setter function.

1.0

Return value

Value

Type

Notes

API Version

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:

  • The parameters are invalid, or

  • The object is not extensible, or

  • The key being modified is non-configurable.

1.0

Example

Add .isAlly, .isEnemy and .isMe properties to Player Obejcts
// 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...