2013-10-04 2 views
0
.. 
Class.prototype.property = function(){ 
return(this.prototypeobject.name); 
} 
.. 

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

간단합니다 (또는 아닐 수도 있습니다). String으로 현재 프로토 타입 객체 이름을 가져 오려고합니다.
참고 :this.prototypeobject.name 작동하지 않습니다. 그것은 단지 예일뿐입니다.자바 스크립트 :이 프로토 타입 개체 이름을 가져옵니다.

+0

'return'은 함수가 아니며, 'return this.prototypeobject.name;'는 동일합니다. – RobG

+0

@RobG 알 수 없습니다. 나는 그 반환이 기능이 아니라는 것을 안다. 그냥 Prototype 객체 이름을 String으로 반환하려고합니다 (내 경우에는 "속성"). – Sylnois

+0

'.prototypeobject'는 무엇을 기대합니까? 나는 [Class'] (http://api.prototypejs.org/language/Class/)에서 그러한 재산에 대해 들어 본 적이 없습니다. – Bergi

답변

0

반사 기능이 없습니다. 함수는 명시 적 참조 (arguments.callee은 더 이상 사용되지 않음)가 아닌 다른 자체를 알지 못하며 함수 객체는 각 속성 이름을 알 수 없도록 모든 속성에 바인딩되지 않습니다. "메소드 이름"이 필요할 때마다 문자열 리터럴로 하드 코딩하십시오.

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' …" 

그러나,이 못생긴 해킹이며 안 :


OK (확인), (당신이 IE에 대한 함수 선언을 변경할 수 named function expression를 사용하여) 당신이 할 수있는 일이 그걸 써.

관련 문제