如何从内部获取Mootools类的名称

sea*_*tar 5 javascript mootools

我想得到类的变量名.

var Poop = new Class({ 
    getClassName: function() { 
        return arguments.callee._owner.name;
    } 
});
var a = new Poop();
a.getClassName(); //want 'Poop'
Run Code Online (Sandbox Code Playgroud)

我正在将其实现到其他类中,并且我想构建一个使用表名的类名(复数)的SQL查询.

我尝试了上面例子的各种组合来试图获得名称,并且无法弄明白(如果它甚至可以考虑MooTools类系统).

sea*_*tar 8

找到了解决方案. Hash有一个keyOf函数,它将为我提供一个包含值的变量名.所以我创建了一个Hash of window,然后询问了类构造函数的关键字.

var Poop = new Class({
    name: function() {
        var w = $H(window);
        return w.keyOf(this.constructor);
    }
});
var a = new Poop();
a.name(); // returns 'Poop'
Run Code Online (Sandbox Code Playgroud)

这当然有效,因为我在全局窗口命名空间中创建了类(与MooTools一样).如果您在某个命名空间中创建了类,那么您只需要对该命名空间进行哈希处理.

编辑:我写了关于如何使用此解决方案以及如何使其在命名空间中自动工作,对于任何感兴趣的MooToolers.