object.func_name <==> object.func_name(arg1,arg2...)
object:func_name <==> object:func_name(self,arg1,arg2...)
点定义函数 ->需要显示传递或接收self
冒号定义函数 -> 可以省略self参数
(冒号的作用:定义时,给函数添加隐藏的第一个参数self;调用时,默认把当前作者作为第一个参数传递进去;)
点定义的函数,最好使用点调用;冒号定义的函数,最好使用冒号调用;否则
第一种情况:点定义函数,冒号调用函数
出现的问题:参数的第一个值为table value
解决的方法:定义时,留出table value 需要的形参
第二种情况:冒号定义函数,点调用函数
出现的问题:第一个参数会丢失,参数整体前移,并且最后一个参数值为nil
解决的方法:点调用的第一个参数传self