..
Class.prototype.property = function(){
return(this.prototypeobject.name);
}
..
oClass = new Class();
alert(oClass.property());
这很简单(或者可能不是?)。我只想将当前原型对象名称作为字符串。
注意: this.prototypeobject.name
不起作用。这只是一个例子。
..
Class.prototype.property = function(){
return(this.prototypeobject.name);
}
..
oClass = new Class();
alert(oClass.property());
这很简单(或者可能不是?)。我只想将当前原型对象名称作为字符串。
注意: this.prototypeobject.name
不起作用。这只是一个例子。
没有这样的反射功能。除了显式引用(已弃用)之外,函数不知道自己arguments.callee
,并且函数对象无论如何都不会绑定到任何属性,因此它们无法知道各自的属性名称。每当您需要“方法名称”时,将其硬编码为字符串文字。
好的,您可以做一些事情(使用命名函数表达式,您可以将其更改为 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' …"
然而,这是一个丑陋的黑客,你不应该使用它。