..
Class.prototype.property = function(){
return(this.prototypeobject.name);
}
..
oClass = new Class();
alert(oClass.property());
这很简单(或者可能不是?)。我只想将当前的原型对象名称作为String
注意: this.prototypeobject.name
不起作用。这只是一个例子。
答案 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' …"
然而,这是一个丑陋的黑客,你不应该使用它。