Object0.25.3
expand_more
abstract external class Object extends Any
- Known subtypes:
- Known usages:
- All versions:
obj = new {
name = "Pigeon" // property
"Hello" // element
["two"] = 2 // entry
}
obj.name // "Pigeon"
obj[0] // "Hello"
obj["two"] // 2
An object can be amended to create variants of itself. This is similar to inheritance in prototype-oriented programming.
pigeon = new { name = "Pigeon"; age = 42 }
barnOwl = (pigeon) { name = "Barn Owl" } // override property `name`
oldPigeon = (pigeon) { age = 84 } // override property `age`
Object members may reference other members:
thresholds = new { lower = 10; upper = lower + 5 }
Object members are dynamically bound. This is similar to how computed cells in a spreadsheet work.
thresholds = new { lower = 10; upper = lower + 5 }
thresholds2 = new { lower = 7 } // thresholds2.upper == 12
Objects have memberwise equality and hash code.
To arbitrarily manipulate an object, convert it to a Collection
.
If necessary, the manipulated Collection
can be converted back to an Object
.
pigeon = new { name = "Pigeon"; age = 42 }
manipulated = pigeon.toMap().mapKeys((key, value) -> key.reverse())
manipulated.toDynamic() // new { eman = "Pigeon"; ega = 42 }
A composite value containing members (properties, elements, entries).