We use cookies on this site to enhance your user experience

Jun 14 2019, 2:18 PM PST 2 min

Methods are unique functions which belong to a particular object or can be custom made. They are a major focus of Roblox Lua. Some common examples of methods include Instance/Destroy|Destroy(), Instance/Clone|Clone(), and Instance/FindFirstChild|FindFirstChild().

A method acts like a type|function stored within an object. The method itself is accessed in the same way a type|function in a type|table is accessed. However, a special property of methods changes how they are called.

These two lines of code are equivalent, calling the type|function a with the parameter b.


The second is briefer and more concise. Methods can increase typing speed, because there is less need to retype variable names.

Making your own

Making your own methods can

  • Make your code look more clean
  • Make your tables more dynamic

First, we need a table to apply the method to. I’m going to make a checkbox. It doesn’t actually do anything, but it’s an application example. Feel free to make this work.

Checkbox = {
	Checked = false;
	CheckedImage = "Image";
	UncheckedImage = "Image";
	ImageButton = ...;
	ChangeState = function(self)
		self.Checked = not self.Checked

You might think you could type


However, that would call Checkbox.ChangeState(x, y) when the event fired. We need to call Checkbox.ChangeState(Checkbox).

When you call a type|function as a method, you automatically pass an argument as the TABLE ITSELF. For example,

function ReturnTable(Num)
	return {
		Num = Num;
		PrintNum = function(self) 
Tabl = ReturnTable(5)

That will output 5 because we passed in the type|table, so the type|function will receive the type|table it’s located in. Because we called it as a method, it passed “Tabl” as an argument. You can do it with a dot, but this isn’t very common:

  • basics