- Global - 全局对象
- Automator - 自动化
- AutoJs6 - 本体应用
- App - 通用应用
- Color - 颜色
- Image - 图像
- OCR - 光学字符识别
- Barcode - 条码
- QR Code - 二维码
- Keys - 按键
- Device - 设备
- Storage - 储存
- File - 文件
- Engine - 引擎
- Task - 任务
- Module - 模块
- Plugins - 插件
- Toast - 消息浮动框
- Notice - 消息通知
- Console - 控制台
- Shell
- Shizuku
- Media - 多媒体
- Sensor - 传感器
- Recorder - 记录器
- Timer - 定时器
- Thread - 线程
- Continuation - 协程
- Event - 事件监听
- Dialog - 对话框
- Floaty - 悬浮窗
- Canvas - 画布
- UI - 用户界面
- Web - 万维网
- HTTP
- Base64
- Crypto - 密文
- OpenCC - 中文转换
- Internationalization - 国际化
- Standardization - 标准化
- E4X
- UiSelector - 选择器
- UiObject - 控件节点
- UiObjectCollection - 控件集合
- UiObjectActions - 控件节点行为
- WebSocket
- EventEmitter - 事件发射器
- ImageWrapper - 包装图像类
- App - 应用枚举类
- Color - 颜色类
- Version - 版本工具类
- Polyfill - 代码填泥
- Arrayx - Array 扩展
- Numberx - Number 扩展
- Mathx - Math 扩展
- Glossaries - 术语
- HttpHeader - HTTP 标头
- HttpRequestMethods - HTTP 请求方法
- MimeType - MIME 类型
- NotificationChannel - 通知渠道
- Data Types - 数据类型
- Omnipotent Types - 全能类型
- Storage - 存储类
- AndroidBundle
- AndroidRect
- CryptoCipherOptions
- CryptoKey
- CryptoKeyPair
- ConsoleBuildOptions
- HttpRequestBuilderOptions
- HttpRequestHeaders
- HttpResponseBody
- HttpResponseHeaders
- HttpResponse
- InjectableWebClient
- InjectableWebView
- NoticeOptions
- NoticeChannelOptions
- NoticePresetConfiguration
- NoticeBuilder
- Okhttp3HttpUrl
- OcrOptions
- Okhttp3Request
- OpenCVPoint
- OpenCVRect
- OpenCVSize
- OpenCCConversion
AutoJs6 文档 - 6.6.4
存储 (Storages)#
storages 模块可用于保存 [ 简单数据 / 配置信息 / 列表清单 ] 等.
保存的数据在脚本间共享, 因此不适于敏感数据的存储.
保存数据时, 需要一个名称, 类似命名空间.
一个名称对应一个独立的本地存储.
但无法像 Web 开发中 LocalStorage 一样提供域名独立的存储, 因为脚本路径可能随时改变.
保存的数据仅在以下情况下会被删除:
- AutoJs6 应用被卸载或清除数据
- 使用 storages.remove / Storage#remove / Storage#clear 等方法删除
支持存入的数据类型:
具体的存入规则详见 Storage#put 小节.
存入时, 由 JSON.stringify 序列化数据为 string 类型后再存入,
读取时, 由 JSON.parse 还原为原本的数据类型.
storages
[m] create#
create(name)#
以 name
参数为名称创建一个本地存储, 并返回 Storage 实例:
/* 创建一个名为 fruit 的本地存储. */
let sto = storages.create('fruit');
/* 存入 "键值对" 数据. */
sto.put('apple', 10);
sto.put('banana', 20);
/* 访问数据. */
sto.get('apple'); // 10
sto.get('banana'); // 20
sto.get('cherry'); // undefined
不同的 name
参数可以创建不同的本地存储:
let stoFruit = storages.create('fruit');
let stoPhone = storages.create('phone');
/* "键" 名均为 apple, 不同的本地存储之间数据独立. */
stoFruit.put('apple', 7);
stoPhone.put('apple', 3);
/* 访问数据 */
stoFruit.get('apple') // 7
stoPhone.get('apple') // 3
如果 name
参数对应的本地存储已存在, 则返回一个本地存储副本:
let sto = storages.create('fruit');
sto.put('apple', 10);
/* 名为 fruit 的本地存储已创建, 因此返回的是存储副本. */
let stoCopied = storages.create('fruit');
/* 虽然 stoCopied 没有存入 apple 数据, 但 fruit 本地存储中存在. */
stoCopied.get('apple'); // 10
/* 副本与原始的本地存储并非引用关系. */
sto === stoCopied; // false
为保证数据安全及唯一性, name
参数应尽量具体:
storages.create('project-publishing-schedule');
[m] remove#
remove(name)#
清除名为 name
的本地存储包含的全部数据.
如果名为 name
的本地存储已存在, 返回 true
, 否则返回 false
.
let sto = storages.create('fruit');
sto.put('apple', 10);
sto.get('apple'); // 10
/* 相当于 storages.create('fruit').clear(); . */
storages.remove('fruit'); // true
/* 执行 remove 方法后, sto 对象将不存在任何存储数据. */
sto.get('apple'); // undefined
/* 但 sto 依然可以存放新的数据. */
sto.put('banana', 20);
sto.get('banana'); // 20