Đó là vì cả hai giá trị trong mảng transitions
của bạn đều trỏ vào cùng một đối tượng. Trong quá trình thực thi mã, bạn tạo một đối tượng có ba tham chiếu khác nhau (transitionInitial
, transistions[0]
, & transistions[1]
).
Trong lần lặp đầu tiên của vòng lặp, transistions[0]
được đặt để tham chiếu đối tượng transitionInitial
. Sau đó, thuộc tính property
của đối tượng đó được đặt thành giá trị "color"
. Trong lần lặp thứ hai transitions[1]
được đặt để tham chiếu cùng một đối tượng là transitionInitial
và transitions[0]
. Sau đó bạn đặt lại giá trị property
thành "background-color"
.
Để giải quyết này tạo các đối tượng khác nhau cho mỗi chỉ số mảng của bạn:
// Not needed anymore:
// var transitionInitial = {property: "none"};
var rules = ["color", "background-color"];
var transitions = [];
for (var k = 0; k < rules.length; k++) {
transitions[k] = {};
transitions[k].property = rules[k];
alert(transitions[0].property);
}
Nguồn
2012-05-16 19:25:21