Skip to content

API Host ScriptObject

Liu.Yandong.Hanks edited this page Aug 19, 2026 · 3 revisions

ScriptObject

宿主创建动态对象的基类

Base class for host-created dynamic objects

.NET Host API 目录

概述

ScriptObject 是用户状态、全局、模块和很多运行时对象的基类。宿主若要把结构化状态注入 $state,应派生它并用 Define 建立成员。

ScriptObject is the base class for user state, globals, modules, and many runtime values. To inject structured state through $state, derive from it and define members with Define.

ScriptObject() / Prototype

Parameters:

  • 构造器无参数。

    Constructor has no parameters.

Returns

新动态对象;Prototype 读取其原型。

New dynamic object; Prototype reads its prototype.

var value = new ScriptObject();
var prototype = value.Prototype;

IsFrozen / Immutable / Frozen()

用途

检查或冻结对象,防止后续修改。

Inspect or freeze an object to prevent later mutation.

var value = new ScriptObject();
value.Frozen();
Console.WriteLine(value.IsFrozen);

Define(key, value, [writeable], [enumerable])

Parameters:

  • key
    成员名。

    Member name.

  • value
    ScriptObjectScriptDatum

    ScriptObject or ScriptDatum.

  • writeableenumerable
    属性描述符。

    Property descriptors.

Returns

无。

None.

var state = new ScriptObject();
state.Define("Name", ScriptDatum.FromString("Aurora"));

GetPropertyValue(key) / SetPropertyValue(key, value) / DeletePropertyValue(key)

Parameters:

  • key
    属性名。

    Property name.

  • value
    要设置的 ScriptObject

    ScriptObject to set.

Returns

获取值、无返回或删除是否成功。

Retrieved value, no value, or deletion success.

var value = new ScriptObject();
value.SetPropertyValue("Child", new ScriptObject());
var child = value.GetPropertyValue("Child");
var removed = value.DeletePropertyValue("Child");

CopyProperties / CopyPropertysFrom / CopyEnumerablePropertysFrom

Parameters:

  • 目标或源对象,以及可选 force/enumerableOnly 标志。

    Target or source object plus optional force/enumerableOnly flags.

Returns

无。

None.

用途

复制属性描述的高级操作。

Advanced property-descriptor copying.

var source = new ScriptObject();
source.Define("Name", ScriptDatum.FromString("Aurora"));
var target = new ScriptObject();
source.CopyProperties(target);

DeepClone() / EnumerationKeys() / GetEnumerator() / IsTrue()

Returns

分别为深度副本、可枚举键、脚本枚举器和 AuroraScript 真值。

Deep clone, enumerable keys, script enumerator, and AuroraScript truthiness.

var value = new ScriptObject();
value.Define("Name", ScriptDatum.FromString("Aurora"));
var copy = value.DeepClone();
var keys = value.EnumerationKeys();

Clone this wiki locally