您已经声明您正在使用 ROBLOX。仔细想想,他们锁定这些东西是有原因的。为什么?安全目的。允许脚本编写者访问这些东西是危险的并且构成严重威胁。所以答案是否定的,一旦被锁定,没有引用就无法回到元表,因为如果有锁定将毫无意义。
ROBLOX 也去掉了 debug 库中的所有函数,但是最近添加的debug.traceback
, so肯定debug.getmetatable
是不行的。
但是,根据您对此的推理,还有其他方法可以完成任务。我将在这里介绍其中的一些:
1)如果你想设置一个实例的元表,用你自己的表做一个假实例,然后用__index
and__newindex
来控制对对象的属性和方法的访问
2)如果要设置库的元表,我们按照与1中相同的方法,创建一个假表并用于__index
索引旧表。
3)如果要设置全局环境的元表,请使用预先存在的元表设置一个新的元表。确保使用__index
,以便其他变量仍然有效!
至于简单地阅读元表,不,你不能这样做。
除此之外,如果您锁定自己的表,如前所述,还有一种访问元表的方法。只需存储对它的引用。最好的方法是在作用域块中创建一个局部变量。meta
do
我希望这能回答你的问题,我试图专门针对 ROBLOX,因为这就是你的问题。