2016-11-06 2 views
-2

이것이 완전한 목적없는 코드라는 것을 알고 있습니다. 이미 익숙한 코드를 사용해 익숙한 함수로 실험하고 있습니다. 배열이 왜 돌아 오지 않는지도 모르겠다.왜이 익명의 함수가 반환되지 않습니까?

(function() { 
    function Employee(name, age, pay) { 
     this.name = name; 
     this.age = age; 
     this.pay = pay || 800; 
    } 

    function Manager(name, age, pay) { 
     Employee.call(this, name, age, pay); 
     this.reports = []; 
    } 
    Manager.prototype = Object.create(Employee.prototype); 
    Manager.prototype.addReport = function(report) { 
     this.reports.push(report); 
    } 

    function Cashier(name, age, pay) { 
     Employee.call(this, name, age, pay); 
    } 
    Cashier.prototype = Object.create(Employee.prototype); 
    var ary = [Cashier, Manager]; 
    return ary; 
}()); 
+1

. * (이번에는 당신을 위해 해 봤습니다.) * –

+2

배열 _is_ 복귀 중. – thgaskell

+0

@ T.J.Crowder에 완전히 동의합니다. 이제 _Anonymous_ 함수를 호출 할 수 없습니다. 그래서, 그들이 정확히 무언가를 돌려 주는지 확인하고 있습니다. 게다가 익명의 기능을 사용할 필요가 있는지 궁금합니다. 필자에게 기능을 정의하는 표준 방법이있을 때 코드 검토가 훨씬 쉽습니다. 해당 함수는 명명 된 함수를 정의하고 정의 된 직후에이를 호출합니다. 그것은 분명하지 않습니까? – FDavidov

답변

1

... 왜 배열은 반환하지 않습니다 그것?

입니다. 당신은 그 반환 값으로 아무것도하지 않고 있습니다.

var result = (function() { // **** 
 
    function Employee(name, age, pay) { 
 
     this.name = name; 
 
     this.age = age; 
 
     this.pay = pay || 800; 
 
    } 
 

 
    function Manager(name, age, pay) { 
 
     Employee.call(this, name, age, pay); 
 
     this.reports = []; 
 
    } 
 
    Manager.prototype = Object.create(Employee.prototype); 
 
    Manager.prototype.addReport = function(report) { 
 
     this.reports.push(report); 
 
    } 
 

 
    function Cashier(name, age, pay) { 
 
     Employee.call(this, name, age, pay); 
 
    } 
 
    Cashier.prototype = Object.create(Employee.prototype); 
 
    var ary = [Cashier, Manager]; 
 
    return ary; 
 
}()); 
 
console.log(result);

+0

좋아, 나는 당신이 반환 된 범위에서 접근 할 수있는 함수에서 객체를 리턴하는 느낌의 임금 아래에 있었다. 그래서 나는 'ary'를 입력하여 전역과 같은 콘솔에서 ary 객체에 액세스한다고 생각했다. 나는 그때 내가 틀렸다고 생각하고 있나? – Brandon

+0

@Brandon : 예, 'ary' (변수)는 익명 함수 내에서 코드에 액세스 할 수 있습니다. 그것은 위의 익명 함수의 * 목적 *입니다. 사용자가 반환 할 수 있도록 설정 한 것을 제외하고는 내부의 항목을 비공개로 유지하는 것입니다. 그것이 참조하는 배열은 접근 가능하지만 익명의 함수가 반환하는 값을 사용하는 경우에만 접근 가능합니다. –

1

사실,이 코드는 두 개의 생성자 함수 객체를 반환 : 첫 번째 줄에 *** 주석을 참조하십시오. 콘솔에 그것을 실행 해보십시오 : -, 도움을 요청하면 답변을 얻을 도움이 될 것입니다 판독 가능 일관 코드를 포맷하는 시간을 복용 할 때

enter image description here

+1

스냅 샷을 추가하는 대신 스택 스 니펫에 OP 코드를 복사 할 수 있습니다. – Rajesh

+0

네, 죄송합니다. 제가 말했어야만했던 그 대상을 보았습니다. 왜 내가 혼란스러워하는 이유 중 하나입니다. 콘솔에 obj를 입력하면 obj가 '정의되지 않음'이라고 표시됩니까? – Brandon

관련 문제