This AI is still in early stages of development.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

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

ParameterTypeMandatoryDescriptionUtil.js version
maskNumber constant(tick)

A constant describing the property descriptor settings:

1.0
keyString(tick)The name (key) of the property as a string.1.0
val_get

Value or

Function

(tick)

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
setFunction(error)

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

ValueTypeNotesAPI Version
<object>ObjectIf 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...
Availability STABLE

Requires:

Contents

Jump to:

Property Definitions

Topics:

See also

Related articles:

  • defineProperty – Mozilla Developer Network page that inspired this .addProp() function

 

  • No labels