这两个JavaScript Object声明之间的区别

时间:2014-07-11 08:34:58

标签: javascript angularjs

任何人都可以告诉我这样做有什么区别:

$scope.pageModel = {};
$scope.pageModel.varA = false;
$scope.pageModel.varB = ""; 
$scope.pageModel.varC = ""; 

并且这样做:

$scope.pageModel = {
     varA = false,
     varB = "",
     varC = ""
};

如果我执行第二个版本,我的应用程序会中断,但如果我按第一个版本执行则不会。当然,只有两种方法可以为模型声明相同的值? - 有人能指出我正确的方向吗?

4 个答案:

答案 0 :(得分:2)

$scope.pageModel = {
     varA: false,
     varB: "",
     varC: ""
};

(这是基本的Javascript语法,根本与Angular无关)

答案 1 :(得分:1)

要使第二个示例正常工作,您需要将其定义为不使用=

的对象
app.controller('testCtr',
function testCtr($scope){
    $scope.pageModel = {
        varA : false,
        varB : "",
        varC : ""
        };
});

现在可行了。 这是基础知识,我建议在javascript中阅读更多有关oop的内容 一些例子在这里:

答案 2 :(得分:1)

2件事:

1。使用 Object Literal 语法时,冒号用于将值映射到键:

var person = {
    name: "Tarzan"
};

2。在使用对象文字语法时,您无法在初始化期间引用对象。您需要在创建对象后引用该对象:

这是无效的:

var items = {
    item1: 10,
    item2: items.item1 + 10 // invalid
};

虽然这是有效的:

var items = {};
items.item1 = 10;
items.item2 = items.item1 + 10; // valid

答案 3 :(得分:0)

Javascript对象表示法是

{
   attribute_1: value_1,
   attribute_2: value_2,
   .
   .
   .
   attribute_n: value_n
}

所以你需要按如下方式声明你的pageModel:

$scope.pageModel = {
  varA: false,
  varB: "",
  varC: ""
};

此外,通常认为使用对象表示法声明对象而不是声明空对象然后分配其属性是好的样式。