跨端的類別
原創2025年6月24日小於 1 分鐘
前情提要
在 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
腳本中定義一個類別,然後在 client
和 server
腳本中使用它。這樣可以確保類別在兩端都可用。
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;
Class()
global.Classes.MyClass = () => new MyClass();
接下來就可以在 client
和 server
腳本中使用這個類別了。
client
腳本const myInstance = new global.Classes.MyClass("World");
console.log(myInstance.greet()); // 輸出: Hello, World!
server
腳本const myInstance = new global.Classes.MyClass("Server");
console.log(myInstance.greet()); // 輸出: Hello, Server!