若同时需要很多个物件,不妨参考一下前面说到阵列适合储存多个资料,储存物件也不例外,我们可以在阵列内储存多个物件,如下:
var farms = [ { farmer: 'Jerry', chicken: 5, duck: 6, dogs: ['小白','小黑'] }, { farmer: 'Tom', chicken: 8, duck: 3, dogs: ['皮皮'] }];
前面有讲到属性不只可以赋予值,也可以是函式,不妨来增加点有函式的属性:
farms[0].poultry = function(){ var total = this.chicken + this.duck; console.log(total); }; farms[1].poultry = function(){ var total = this.chicken + this.duck; console.log(total); };
以上複习到了前面两个观念:
阵列的读取是要中括号搭配索引编号读取物件的属性所以我们在整个 farms 阵列内先读取第一个资料,即 farms[0]
接下来为它新增一个属性 farms[0].poultry
且这个属性赋予一个函式用来计算所有的家禽farms[0].poultry = function(){...}
若此时在 console 呼叫 farms 这个阵列会如下:
var farms = [ { farmer: 'Jerry', chicken: 5, duck: 6, dogs: ['小白','小黑'], poultry: function(){ var total = this.chicken + this.duck; console.log(total); } }, { farmer: 'Tom', chicken: 8, duck: 3, dogs: ['皮皮'], poultry: function(){ var total = this.chicken + this.duck; console.log(total); } }];
如果此时想要计算第二个物件的家禽数量:
console.log(farms[1].poultry());
此时会在 console 看到 11
如果想要读取第一个物件的 dogs 属性的第一笔资料,则:
console.log(farms[0].dogs[0]);
此时会在 console 看到 小白
这里资料型态读取上都是依照前面讲过的观念,不同资料型态读取上会较複杂,可以多重複看几次来消化