Window = {}
Window.prototype = {x=0,y=0,width=100,height=100}
Window.mt = {}
function Window.New(x)
setmetatable(x,Window.mt)
return x
end
Window.mt.__index = function(t,k)
return Window.prototype[k]
end
t = Window.New({})
print(t.width)
Window.mt.__newindex = function(t,n,v)
error("not exists "..n,2)
end
--t.ll = 2 会报错
Window.mt.__index = {width=888}
print(t.width) --888
Window.mt.__newindex = {}
t.ll = 2;
print(t.ll) --nil
print(Window.mt.__newindex.ll) --2__index元方法,主要table访问不存在的元素的时候,就会调用该方法,可以用来做继承,返回一些默认的值,如果__index是一个table,会自动去这个table查找那个值并返回。
__newindex元方法,主要在table对一个不存在属性进行赋值时调用的方法,如果__newindex引用的是一个table,那么会将值添加到这个table中了。