0

달리 OOP에는 발신자가없는 않습니다. 그러나 oop 스타일로 작성하면 호출자는 null입니다.왜이 같은 다른 절차 적 함수를 호출 절차 적 기능을 가지고있는 경우 객체의 프로토 타입 방법은 절차 적 프로그래밍에서

function myObj() {} 
myObj.prototype.awesome = function() { 
    return arguments.callee.caller.name; 
} 
myObj.prototype.ridiculous = function() { 
    return this.awesome(); 
} 

나는 왜 이런 일이 일어나고 어떻게 호출자를 돌려 받게되는지 궁금합니다.

답변

1

개체의 키와 함수 이름이 같은 것은 아닙니다.

내 가져온 부분을 살펴 보자

function myObj() {} 
 
myObj.prototype.awesome = function awesome() { 
 
    return arguments.callee.caller.name; 
 
} 
 
myObj.prototype.ridiculous = function ridiculous() { 
 
    return this.awesome(); 
 
} 
 

 
var o = new myObj(); 
 
console.log(o.ridiculous())

+0

바보 나! 답변을 읽은 후에는 완전히 분명합니다. 고맙습니다! – shaedrich

0

프로토 타입의 메소드를 선언 할 때 당신은 이름이 지정된 함수를 사용해야합니다 때문입니다.

같은 :

function myObj() {} 
myObj.prototype.awesome = function awesome() { 
    return arguments.callee.caller.name; 
} 
myObj.prototype.ridiculous = function ridiculous() { 
    return this.awesome(); 
} 

myObj.prototype.ridiculous() 
+0

아, 고마워. 나는 그것을 명심 할 것이다 :) – shaedrich