a={
age=0,
__tostring=function()
{
},
__call=function()
{
},
}
b={}
a.__index=a{}//将a表中的__index指向自己
setmetatable(a,b)//将b设置为a的元表;
__tostring
当子表a被当做字符串使用时会调用原表b中的__tostring方法,
__call
当子表a被当做字符串使用时会调用原表b中的__call方法
__index
当b.age是会先寻找b表中的age属性,没找到时会在原表中__index指向的表中去寻找
__newindex
b.name a,b表中都没有name属性,执行b.name="123"会在b表中生成属性name="123",如果设置
a.__newindex={} 会把name生成到__newindex指向的表中去