2014-02-25 4 views
0

나는 왜 저자의 코드에서 Avengers 대신 Avengers.cast를 사용하는지 이해하지 못한다.자바 점 연산자

이 의미
var myApp = angular.module('myApp', []); 
    myApp.factory('Avengers', function() { 
     var Avengers = {}; 
     Avengers.cast = [{ 
      name: "Robert Downey Jr.", 
      character: "Tony Stark/Iron Man" 
     }]; 
     return Avengers; 
    }) 


function AvengersCtrl($scope, Avengers) { 
    $scope.avengers = Avengers; 
} 
+2

그는'Avengers' 객체에 'cast' 속성을 설정하고 있습니다. 동일한 표기법을 사용하여 액세스 할 수 있습니다. –

+0

@ 치명적 기타 : 그럼 왜 변수 대신에 속성을 설정해야합니까? –

+4

분명히 디자인 결정 - 어벤져 스 객체는 아마도 캐스트보다 미래에 더 많은 속성을 가질 것입니다 – doodeec

답변

1
var Avengers = {}; 

: 새 객체를 만들고 변수 어벤저

Avengers.cast = [{ 
     name: "Robert Downey Jr.", 
     character: "Tony Stark/Iron Man" 
    }]; 

이 의미하여 참조 : 지금 막 생성 된 객체는 cast라는 속성이 있습니다. 이 배열은 정확히 하나의 객체 (String 값을 갖는 두 개의 속성 포함)를 포함합니다.

+0

왜 var 선언합니까? 복수 자 = {}; 및 Avengers.cast 내가 코드를 삭제할 때 코드가 동일하게 작동하는 것처럼 보일 때 Avengers = {}; Avengers.cast를 Avengers로 변경 하시겠습니까? 당신의 대답에 대해 정말 고마워요! – tharderer

0

cast 속성의 Avengers은 특정 개체로 설정됩니다. 즉, 처음에는 Avengers에 가치가 없습니다. 공장 섹션에서 Avengers

Avengers.cast = [{ 
    name: "Robert Downey Jr.", 
    character: "Tony Stark/Iron Man" 
}]; 

당신은 console.log(Avengers.cast) 같은 코드에서이 곳을 사용할 수 있습니다되었다. 함수에 대한 예제;

myApp.factory('Avengers', function() { 
    return { 
     helloWorld: function() { 
      return "Hello, World!" 
     } 
    }; 
}); 

코드 어딘가에 Avengers.helloWorld()을 사용할 수 있습니다.

요약하면 angular.js 팩토리로 개체를 만들고 해당 개체에 대한 속성을 설정하여 해당 개체에 함수를 만들 수도 있습니다. 자세한 내용은 here을 참조하십시오.

0

정보를 전달하는 방법은 여러 가지가 있습니다.

작성자는 Avengers 서비스를 배열이있는 객체 대신 배열로 만들 수있었습니다.

그래서 선택의 폭은 다소 임의적이었습니다.

저자가 더 많은 속성을 가진 Avengers 서비스를 확장하려는 경우, 그 이유는 배열이있는 객체가 선택된 이유입니다.

만약 당신이 그것을 할 예정이라면 constant을 체크 아웃해야합니다. 어쩌면 factory보다 더 적절할 수도 있습니다.