对象

对象

对象(Object)是一种非常核心和基础的数据结构,同时也是一种引用类型。对象用于存储和表示具有键值对(key-value pairs)结构的数据,其中键(也称为属性名或属性)是字符串,而值则可以是任意数据类型,包括数字、字符串、布尔值、数组、函数甚至是其他对象。

普通对象

普通对象是最基本的对象类型,由用户通过对象字面量 {} 创建。它们主要用于存储键值对。

let user = {
    name: "xx",
    age: 123,
    getName() {
        return this.name;
    },
    setName(name) {
        this.name = name;
    }
}

内置对象

vino 提供了consoleJSONlogglobalconfigvinoTOON共6种内置对象

console

console 用于开发者在控制台进行调试输出,建议在开发环境下使用,console只有1个log函数。生产环境建议使用log对象

示例

let message = "Hello, World!";
console.log(message); // 输出:Hello, World!

log

log用来记录日志,属性与方法如下

名称类型参数返回值说明
info方法...message:any[]void记录信息级别的日志
debug方法...message:any[]void记录调试级别的日志
warn方法...message:any[]void记录警告级别的日志
error方法...message:any[]void记录错误级别的日志
fatal方法...message:any[]void记录致命错误级别的日志
config方法objectvoid配置日志参数,如输出方式、日志级别等

输出日志

log.info("info");
log.debug("debug");
log.warn("warn");
log.error("error");
log.fatal("fatal");

注意

log.fatal 会中断程序运行

控制台打印:

2024-02-06 11:58:43 INFO  index.js:13 > info
2024-02-06 11:58:43 DEBUG index.js:14 > debug
2024-02-06 11:58:43 WARN  index.js:15 > warn
2024-02-06 11:58:43 ERROR index.js:16 > error
2024-02-06 11:58:43 FATAL index.js:17 > fatal

config

默认情况下,log会输出到控制台,默认为debug级别。你可以通过下面配置来修改默认日志配置

//配置日志
log.config({
    out: 0, //日志输出方式:0控制台,1文件
    level: "info", //日志级别:debug,info,warn,error,fatal
    filename: "/Desktop/temp/logs/x.log",//当out=1时,必须指定日志文件路径
    maxSize: 1,//日志文件最大大小,单位MB
    maxBackups: 2,//日志文件最大备份数
    maxAge: 3,//日志文件最大保存天数
    compress: false//是否压缩日志文件
});

JSON

属性与方法

名称类型参数返回值说明
stringify方法value:anystring将一个值转换为 JSON 字符串
parse方法text:string,type?:stringany将一个 JSON 字符串转换回的值

stringify

JSON.stringify()方法用于将数组中的所有元素连接成一个字符串。

语法

JSON.stringify(value); 
  • value: 要转换为 JSON 字符串的值。

示例

const obj = {name: "John", age: 30, city: "New York"};
const myJSON = JSON.stringify(obj);
console.log(myJSON); // 输出:'{"name":"John","age":30,"city":"New York"}'

parse

JSON.parse()方法将一个 JSON 字符串转换回 JavaScript 的值。

语法

JSON.parse(text, type);
  • text: 要被解析成 JavaScript 值的 JSON 字符串。
  • type: (可选),指定要转换成的 JavaScript 值的类型,目前支持Map,Set

示例

const jsonString = '{"name":"John","age":30,"city":"New York"}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // 输出:John

let arr = JSON.parse(`[1, 2, 3, "w", 2,  3 ,"2"]`);
console.log(arr);   // 输出:[1, 2, 3, "w", 2, 3, "2"]

let set = JSON.parse(`[1, 2, 3, "w", 2,  3 ,"2"]`, "Set");
console.log(set);   // 去重后为 {1, 2, 3, "w", "2"},输出:Set(5)

let map = JSON.parse(`{"name":"x","age":[1,2,3]}`, "Map");
console.log(map);   // Map(2)

global

global对象是一个map,可以存储任何key-value数据。global是全局唯一和共享的,这也意味着在程序中的任何地方都可以共享数据。

global.set("name", "vino");
let name = global.get("name");

作用

  1. 提供一个全局容器;
  2. 多个js文件之间无需频繁importexport,也可以进行数据交换;
  3. 解耦js文件之间的依赖;

config

config 对象的内容来自于config.js文件的默认导出。config.js文件是vino框架唯一且默认的配置文件,该文件存放位置为项目入口js文件的同级目录,程序启动时会自动加载。也可以在启动时通过 --config=./config.js 指定配置文件的路径。

/project
  ├── index.js  //主文件
  ├── config.js //配置文件
  └── src
      ├── f1.js
      ├── f2.js
      └── f3.js

index.js 文件

let server = config.server;
//这里会打印: 8080
console.log(server.port)

config.js 文件

export default {
    server: {
        port: 8080,
    }
}

作用

由于vino框架支持将js文件编译成ss字节码文件,编译器会将所有依赖文件(通过import导入的文件) 全部编译到字节码中,这样当执行ss文件时,就无法对配置进行修改。

注意事项

不要在任何代码中通过import来导入config.js文件

vino

vino对象中包含filenamedirname2个属性,用于获取主文件绝对路径和主文件所在目录的绝对路径

属性与方法

名称类型参数返回值说明
filename属性string主文件的绝对路径
dirname属性string主文件所在目录的绝对路径
version属性string获取当前vino的版本号
vinopath属性string获取vino主目录

关于路径相关的内容请查阅相对路径

TOON

TOON 是 vino 提供的内置对象,用于将 JavaScript 值转换为 TOON 格式字符串。 它常用于数据序列化、结构化输出或与底层运行时进行数据交互。

属性与方法

名称类型参数返回值说明
encode方法value:anystring将任意 JavaScript 值转换为 TOON 格式字符串

encode

TOON.encode() 用于将一个 JavaScript 值转换为 TOON 字符串表示形式。

语法

TOON.encode(value)

参数

  • value:任意 JavaScript 值 支持的类型包括:

    • 基本类型:numberstringbooleannull
    • 数组 Array
    • 对象 Object
    • 嵌套结构

返回值

  • 返回转换后的 TOON 格式字符串
  • 如果未传入参数,则返回空字符串 ""

示例

// 基本类型
console.log(TOON.encode(123));
console.log(TOON.encode("hello"));
console.log(TOON.encode(true));


// 对象
let user = {
    name: "vino",
    age: 18
};

console.log(TOON.encode(user));


// 数组
let arr = [1, 2, 3];
console.log(TOON.encode(arr));


// 复杂嵌套结构
let list = [{
    name: "x",
    age: 1,
}, {
    name: "x2",
    age: "13",
}, {
    name: "x4",
    age: "15",
}];

console.log(TOON.encode(list));
更新时间 2/11/2026, 4:46:01 PM