# DOpusFactory

**DOpusFactory** 对象是一个辅助对象，您可以使用它来创建各种其它对象。与表示现有*事物*的对象（例如 [**文件窗口**](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/lister.zh) 或 [**Tab**](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/tab.zh)）不同，由 **DOpusFactory** 创建的对象是独立对象，您可以在需要其功能时随时实例化它们。**DOpusFactory** 对象可以通过 [**DOpus**](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/dopus.zh)**.Create** 方法获得。

<table data-header-hidden><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>方法名称</td><td><strong>参数</strong></td><td>返回值类型</td><td>描述</td></tr><tr><td>Blob</td><td><em>无</em><br>或 &#x3C;int:size><br>或 &#x3C;byte, byte, ...><br>或 &#x3C;<a href="blob.zh"><strong>Blob</strong></a>:source></td><td><em>对象:</em><a href="blob.zh"><strong>Blob</strong></a></td><td><p>返回一个新的 <a href="blob.zh"><strong>Blob</strong></a> 对象，它允许您从脚本访问和操作一段二进制数据。如果没有给出参数，新的 <strong>Blob</strong> 将为空 - 您可以使用 <strong>resize</strong> 方法设置其大小 - 否则您可以指定初始大小作为参数。</p><p>您还可以通过指定实际字节值（例如 <em>Blob(72,69,76,76,79)</em>）来创建一个预先填充数据的 <strong>Blob</strong>。</p><p>如果给出了另一个 <strong>Blob</strong>（或数组 - 有关此的讨论，请参阅 <strong>Blob</strong> 对象的文档），则将创建新的 <strong>Blob</strong> 作为现有 <strong>Blob</strong> 的副本。</p></td></tr><tr><td>BusyIndicator</td><td><em>无</em></td><td><em>对象:</em><a href="busyindicator.zh"><strong>BusyIndicator</strong></a></td><td>创建一个新的 <a href="busyindicator.zh"><strong>BusyIndicator</strong></a> 对象，它允许您从脚本控制面包屑栏繁忙指示器。</td></tr><tr><td>Command</td><td><em>无</em></td><td><em>对象:</em><a href="command.zh"><strong>Command</strong></a></td><td>创建一个新的 <a href="command.zh"><strong>Command</strong></a> 对象，它允许您从脚本运行 Opus 命令。</td></tr><tr><td>Date</td><td><em>无</em><br>或 &#x3C;variant:date><br>或 <em>JScript Date</em></td><td><em>对象</em>:<a href="date.zh"><strong>Date</strong></a></td><td><p>创建一个新的 <a href="date.zh"><strong>Date</strong></a> 对象。如果提供日期值，则新对象将初始化为该值，否则日期将设置为当前本地时间。提供的 value 可以是以下之一：</p><ul><li>另一个 <strong>Date</strong> 对象</li><li>格式为 "yyyymmdd" 的字符串</li><li>格式为 "yyyy-mm-dd hh:mm:ss.mmm"（或部分）的字符串</li><li>JScript <strong>Date</strong> 对象</li><li>Unix 时间戳值（自 1970 年 1 月 1 日以来的秒数）。</li></ul></td></tr><tr><td>Filter</td><td><em>无</em><br>或 &#x3C;string></td><td><em>对象:</em><a href="filter.zh"><strong>Filter</strong></a></td><td>创建一个新的 <a href="filter.zh"><strong>Filter</strong></a> 对象，它允许您在从脚本运行命令时控制递归过滤。您可以选择提供一个 <a href="../../../readme.zh-2/readme.zh-4/textual_filters.zh">文本过滤器</a> 字符串来初始化过滤器。检查新 <strong>Filter</strong> 对象的 <strong>valid</strong> 属性以确定此字符串是否成功解析。</td></tr><tr><td>Map</td><td><em>无</em><br>或 &#x3C;variant:key>,<br>&#x3C;variant:value>...</td><td><em>对象</em>:<a href="map.zh"><strong>Map</strong></a></td><td><p>创建一个新的 <a href="map.zh"><strong>Map</strong></a> 对象。如果没有提供参数，<strong>Map</strong> 将为空。否则，<strong>Map</strong> 将使用提供的键/值对进行预初始化。</p><p>//For <a href="example://">example://</a></p><pre><code>Map("firstname","fred","lastname","bloggs");
</code></pre><p>各个键和值可以是不同的类型。</p></td></tr><tr><td>OrderedMap</td><td><em>无</em><br>或 &#x3C;variant:key>,<br>&#x3C;variant:value>...</td><td><em>对象</em>:<a href="orderedmap.zh"><strong>OrderedMap</strong></a></td><td>创建一个新的 <a href="orderedmap.zh"><strong>OrderedMap</strong></a> 对象。这与 <a href="https://github.com/Chaoses-Ib/DirectoryOpus/blob/main/Manual/reference/scripting_reference/scripting_objects/Map.zh.md">Map</a> 对象相同，只是它保留添加到映射中的项目的顺序，而不是按字母顺序排序。</td></tr><tr><td>StringSet</td><td><em>无</em><br>或 &#x3C;string>, ...</td><td><em>对象</em>:<a href="stringset.zh"><strong>StringSet</strong></a></td><td><p>创建一个新的区分大小写的 <a href="stringset.zh"><strong>StringSet</strong></a> 对象。如果没有提供参数，<strong>StringSet</strong> 将为空。否则它将使用提供的字符串进行预初始化；例如：</p><pre><code>StringSet("dog","cat","pony");
</code></pre><p>您还可以传递字符串数组或 <a href="vector.zh"><strong>Vector</strong></a> 对象来初始化集合。</p></td></tr><tr><td>StringSetI</td><td><em>无</em><br>或 &#x3C;string>, ...</td><td><em>对象</em>:<a href="stringset.zh"><strong>StringSet</strong></a></td><td>创建一个新的不区分大小写的 <a href="stringset.zh"><strong>StringSet</strong></a> 对象。如果没有提供参数，<strong>StringSet</strong> 将为空。否则它将使用提供的字符串进行预初始化。</td></tr><tr><td>StringTools</td><td><em>无</em></td><td><em>对象</em>:<a href="stringtools.zh"><strong>StringTools</strong></a></td><td>创建一个新的 <a href="stringtools.zh"><strong>StringTools</strong></a> 对象，它提供字符串编码和解码的辅助函数。</td></tr><tr><td>UnorderedSet</td><td><em>无</em><br>或 <em>variants</em>...</td><td>object:<a href="unorderedset.zh"><strong>UnorderedSet</strong></a></td><td><p>创建一个新的 <a href="unorderedset.zh"><strong>UnorderedSet</strong></a> 对象。如果没有提供参数，<strong>UnorderedSet</strong> 将为空。否则它将使用提供的元素进行预初始化。</p><p>您还可以传递数组或 <a href="vector.zh"><strong>Vector</strong></a> 来初始化集合。</p></td></tr><tr><td>Vector</td><td><em>无</em><br>或 &#x3C;int:elements><br>或 <em>variants...</em><br>或 <em>object:</em><a href="vector.zh"><strong>vector</strong></a><br>或 <em>JScript Array</em></td><td><em>对象:</em><a href="vector.zh"><strong>Vector</strong></a></td><td><p>创建一个新的 <a href="vector.zh"><strong>Vector</strong></a> 对象。</p><p>如果没有提供参数，<strong>Vector</strong> 将为空。</p><p>如果提供单个整数参数，<strong>Vector</strong> 将预初始化为该元素数量。</p><p>您还可以传递另一个 <a href="vector.zh"><strong>Vector</strong></a> 或 <em>JScript</em> 数组，或大多数可枚举对象，作为参数来使用现有集合的内容初始化新的 <strong>Vector</strong>。</p><p>如果提供多个参数，<strong>Vector</strong> 将使用这些元素进行预初始化；例如：</p><pre><code>Vector("dog","cat","horse");
</code></pre><p>各个元素可以是不同的类型。</p><p>如果您想创建一个只有一个元素的 <strong>Vector</strong>，最好创建一个空的 <strong>Vector</strong>，然后在第二步添加该元素。在创建期间传递单个元素可能会产生意外结果，因为它可能被解释为其它情况之一。（许多脚本对象可以隐式转换为整数或集合。）</p></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/dopusfactory.zh.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
