2016-05-23 14 views
5

Tôi đang tìm giải pháp tạo khóa đối tượng (được viết đúng cách?) Động.Tự động tạo khóa đối tượng trong IE 11 (Số nhận dạng dự kiến, chuỗi hoặc số, không phải là dấu phẩy)

dụ Arbitrary, nhưng hoạt động này trong chrome và firefox

var weeks = {} 
for(var i = 0; i < 5; i++){ 
    $.extend(weeks, {["week" + i] : (i * 2)} 
} 

//weeks = {"week0":0,"week1":2,"week2":4,"week3":6,"week4":8} 

Hoặc ví dụ tùy ý thay thế

var object = { 
    ["a" + 50]: "value" 
} 

Vấn đề dường như được bắt nguồn từ các nhà điều hành [], nhưng tôi không hiểu tại sao hoặc tại sao vấn đề này chỉ xảy ra trong IE. Tôi đã không thử nghiệm trong các phiên bản trước để IE11, nhưng tôi sẽ giả định vấn đề sẽ tồn tại ở đó là tốt.

Vì vấn đề dường như với chính nhà điều hành [], tạo khóa của tôi trong một biến và sau đó đẩy biến đó vào [] của tôi sẽ không làm bất cứ điều gì để khắc phục sự cố, vì vậy tôi dường như là cả hai ý tưởng và từ khóa cho google.

Vậy có cách nào để tự động tạo khóa đối tượng trong IE không?

+2

IE11 không hỗ trợ nhiều (nếu có) cú pháp ES6 mới. Hãy nhớ rằng, đó là Internet Explorer, không phải là một trình duyệt web hiện đại. –

+2

Mở rộng trên nhận xét @RocketHazmat: kiểm tra "đối tượng ngữ pháp mở rộng -> thuộc tính được tính toán" trong [Bảng tương thích ECMAScript6] (https://kangax.github.io/compat-table/es6/) để kiểm tra nơi bạn có thể sử dụng cú pháp này . – apokryfos

+2

Tại sao sử dụng mở rộng? Chỉ cần sử dụng ký hiệu ngoặc vuông và gán trực tiếp thuộc tính? 'weeks [" week "+ i] = i * 2;' – evolutionxbox

Trả lời

5

IE11 không phải là trình duyệt web "hiện đại" giống như Chrome, Firefox hoặc thậm chí là Edge. Nó không hỗ trợ "mở rộng đối tượng chữ" mới từ ES6 (ES2015).

Cú pháp bạn đang sử dụng được gọi là "khóa thuộc tính được tính", bạn không thể sử dụng nó trong IE11. Bạn cần phải làm điều này theo cách "lỗi thời".

var weeks = {}; 

for(var i = 0; i < 5; i++){ 
    var tmp = {}; 
    tmp["week" + i] = i*2; 

    $.extend(weeks, tmp); 
} 
+0

Điều này sẽ không được đẹp, hehe, nhưng cảm ơn bạn đã xóa nó lên – NachoDawg

+1

@NachoDawg: Bạn được chào đón. Đó là cuộc đấu tranh khi bạn cần hỗ trợ các trình duyệt "cũ". –

Các vấn đề liên quan