| 类型 | 
 | 
当使用 module() 函数创建模块时,它会将模块名称的值添加为 metatable._NAME。此函数利用了这种默认行为。注意:这并不适用于 C 扩展,除非作者专门添加了该值。
function typeof(var)
    local _type = type(var);
    if(_type ~= "table" and _type ~= "userdata") then
        return _type;
    end
    local _meta = getmetatable(var);
    if(_meta ~= nil and _meta._NAME ~= nil) then
        return _meta._NAME;
    else
        return _type;
    end
end