Files
cell/docs/library/object.md
2026-02-07 12:01:58 -06:00

1.9 KiB

title, description, weight, type
title description weight type
object Object creation and manipulation 40 docs

The object function and related utilities handle object creation and manipulation.

Creation

object(obj)

Shallow copy an object.

var copy = object(original)

object(obj, another)

Combine two objects.

object({a: 1}, {b: 2})  // {a: 1, b: 2}
object({a: 1}, {a: 2})  // {a: 2}

object(obj, keys)

Select specific keys.

object({a: 1, b: 2, c: 3}, ["a", "c"])  // {a: 1, c: 3}

object(keys)

Create object from keys (values are true).

object(["a", "b", "c"])  // {a: true, b: true, c: true}

object(keys, value)

Create object from keys with specified value.

object(["a", "b"], 0)  // {a: 0, b: 0}

object(keys, fn)

Create object from keys with computed values.

object(["a", "b", "c"], (k, i) => i)  // {a: 0, b: 1, c: 2}

Prototypes

meme(prototype)

Create a new object with the given prototype.

var animal = {speak: function() { log.console("...") }}
var dog = meme(animal)
dog.speak = function() { log.console("woof") }

proto(obj)

Get an object's prototype.

var p = proto(dog)  // animal

isa(obj, prototype)

Check if prototype is in the chain.

isa(dog, animal)  // true

Serialization

splat(obj)

Flatten an object's prototype chain into a plain object. Only includes primitive types (numbers, text, booleans, arrays, objects).

var base = {x: 1}
var derived = meme(base)
derived.y = 2

splat(derived)  // {x: 1, y: 2}

When sending objects between actors with $send, they are automatically splatted.

Key Iteration

var obj = {a: 1, b: 2, c: 3}

// Get all keys
var keys = array(obj)  // ["a", "b", "c"]

// Iterate
for (var key in obj) {
  log.console(key, obj[key])
}