diff --git a/imports/class/shared.lua b/imports/class/shared.lua index 474f0ca..fd5bd51 100644 --- a/imports/class/shared.lua +++ b/imports/class/shared.lua @@ -21,8 +21,10 @@ local function assertType(id, var, expected) return true end +local mixins = {} + ---Creates a new instance of the given class. -local function createObj(class, obj) +function mixins.new(class, obj) if obj.private then assertType('private', obj.private, 'table') setmetatable(obj.private, private_mt) @@ -42,11 +44,9 @@ end function lib.class(name, super) assertType(1, name, 'string') - local class = { - __name = name, - new = createObj, - } + local class = table.clone(mixins) + class.__name = name class.__index = class return super and setmetatable(class, super) or class