We've been doing OO in a similar way in Cosmos libraries since beta. Example:
Code:
MyAddOn = {};
MyAddOn.SomeFunc = function()
end
MyAddOn.SomeOtherFunc = function()
end
MyAddOn.AnotherFunc = function()
end
The only real difference is that it doesn't pass the MyAddOn table as the first argument and that you call it using '.' and not ':' Ex: MyAddOn.AnotherFunc()
In some cases having the self passed may be useful, say for abstracting frame code, but for most code I've seen it's not used. What are some isntances in which it might be good to have?
Also I'd have to say the method of OO that you listed confused the heck out of me when I first read similar code, but I think the example I gave is a little easier to understand at first glance. It's less complex.