跳至主要內容

跨端的類別

芒果凍布丁原創2025年6月24日小於 1 分鐘KubeJS 7

前情提要

在 KubeJS 中因為 Rhino 的限制,導致無法使用 class 關鍵字來創建類別。取而代之的是,我們使用 function 來定義類別(ES6 類別的語法),並使用 prototype 來添加方法。
這裡有一個簡單的範例,展示了如何在 KubeJS 中創建一個類別:

function MyClass(name) {
  this.name = name;
}
MyClass.prototype.greet = function() {
  return `Hello, ${this.name}!`;
};

// 使用類別
const myInstance = new MyClass("World");
console.log(myInstance.greet()); // 輸出: Hello, World!

你可以先在 startup 腳本中定義一個類別,然後在 clientserver 腳本中使用它。這樣可以確保類別在兩端都可用。

global.Classes = global.Classes || {};

然後在 startup 腳本中定義你的類別。這裡我們使用 ES5 的語法來定義類別,因為 KubeJS 使用的是 Rhino 引擎,這樣可以確保在所有端都能正常運行。

function MyClass(name) {
  this.name = name;
};

MyClass.prototype.greet = function() {
  return `Hello, ${this.name}!`;
};

接下來有兩種選擇,看你想在調用的時候使用 new 以標示這是一個類別,還是直接調用方法。

new Class()
global.Classes.MyClass = MyClass;

接下來就可以在 clientserver 腳本中使用這個類別了。

client 腳本
const myInstance = new global.Classes.MyClass("World");
console.log(myInstance.greet()); // 輸出: Hello, World!
上次編輯於: 2025/6/24 下午11:18:52
貢獻者: EvanHsieh0415