Usually tables() is executed at the prompt, where parent.frame() returns .GlobalEnv. tables() may also be useful inside functions where parent.frame() is the local scope of the function; in such a scenario, simply set it to .GlobalEnv to get the same behaviour as at prompt.
Note that on older versions of R, object.size may be slow, so setting mb=FALSE may speed up execution of tables significantly.
Setting silent=TRUE prints nothing; the metadata are returned as a data.table, invisibly, whether silent is TRUE or FALSE.