Нет такой функциональности отражения. Функция не знает себя иначе, чем с помощью явной ссылки (arguments.callee
устарела), а объекты функций не привязаны ни к каким свойствам, так что они не могут знать соответствующее имя свойства. Всякий раз, когда вам нужно «имя метода», hardcode это как строковый литерал.
Хорошо, есть что-то можно сделать (с помощью 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' …"
Однако это уродливое рубить, и вы не должны используй это.
'return' не является функцией,' return this.prototypeobject.name; 'эквивалентно. – RobG
@RobG Я не понимаю. Я знаю, что возврат не является функцией. Я просто хочу вернуть имя объекта Prototype как String (в моем случае «свойство»). – Sylnois
Что вы ожидаете? .prototypeobject? Я никогда не слышал о таком свойстве в ['Class'] (http://api.prototypejs.org/language/Class/). – Bergi