Javascript:获取此原型对象名称

时间:2013-10-04 11:40:11

标签: javascript prototypejs jsobject

..
Class.prototype.property = function(){
return(this.prototypeobject.name);
}
..

oClass = new Class();
alert(oClass.property());

这很简单(或者可能不是?)。我只想将当前的原型对象名称作为String 注意: this.prototypeobject.name不起作用。这只是一个例子。

1 个答案:

答案 0 :(得分:0)

没有这样的反射功能。函数除了通过显式引用(arguments.callee不推荐)之外不知道自己,并且函数对象无论如何都不绑定到任何属性,因此它们无法知道相应的属性名称。每当您需要“方法名称”时,将其硬编码为字符串文字。


好的,您可以做一些事情(使用named function expression,您可以将其更改为IE的函数声明):

Constr.prototype.someProperty = function myFuncName(args…) {
    var propertyName = "";
    for (var p in this)
        if (this[p] == myFuncName) {
            propertyName = p;
            break;
        }
    alert("this function (myFuncName) was found on property '"
         +propertyName+"' of `this` object");
};

var inst = new Constr(…);
inst.someProperty(…); // alerts "… found on property 'someProperty' …"

然而,这是一个丑陋的黑客,你不应该使用它。