Javascript点运算符

时间:2014-02-25 11:53:29

标签: javascript angularjs dot-operator

我是一个javascript noob所以我不明白为什么在下面的代码中作者使用Avengers.cast而不仅仅是Avengers?

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;
}

3 个答案:

答案 0 :(得分:1)

    var Avengers = {};

这意味着:创建一个新对象并通过变量Avengers

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

这意味着:刚创建的对象现在有一个名为cast的属性。这是一个Array,只包含一个对象(带有两个带String值的属性)。

答案 1 :(得分:0)

在您的代码中,cast的{​​{1}}属性设置为特定对象。比方说,最初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!" } }; });

总之,您可以使用angular.js factory创建对象,并为该对象设置属性,也可以在该对象中创建函数。有关详细信息,请参阅here

答案 2 :(得分:0)

回答您的具体问题:传递信息的方法不止一种。

作者本可以使Avengers服务只是数组而不是数组的对象。

所以选择有些随意,因为你似乎正在接受。

如果作者计划扩展具有更多属性的Avengers服务,那么这就是选择具有该数组的对象的原因。

虽然如果你打算这样做,你应该查看constant - 也许它比factory更合适。

相关问题