thể trùng lặp:
Self-references in object literal declarationsObject tham khảo tài sản riêng của mình trên initilization
này có thể được thực hiện?(rõ ràng không phải trong cú pháp này)
var a = {
b : 10,
c : this.b * 2 // returns 'undefined'
};
Tôi cũng đã cố gắng
var a = {
b : 10,
c : a.b * 2 // throws error 'a is undefined'
};
và
var a = {
b : 10,
c : b * 2 // throws error 'b is undefined'
};
Nó có ý nghĩa với tôi rằng những giá trị này là không xác định, tôi có không hoàn thành việc xác định chúng. Tuy nhiên có vẻ như với tôi như sẽ có một giải pháp để cơ cấu lại một đối tượng như thế và có c
được điều kiện trên b
Xem xét bạn đang khởi tạo 'b' tại thời gian biên dịch, tại sao' c' lại có điều kiện? Bạn đã biết nó là gì! –
Những gì tôi đã đăng là một ví dụ đơn giản. Tôi sẽ không phải lúc nào cũng biết 'b' là gì. Nếu không tôi sẽ không cần phải có điều kiện. nghĩ rằng 'b: function (x) {/ * làm một số thứ */return y;},' – rlemon
@Chad 1. JS không được biên dịch, 2. hoàn toàn bình thường để khởi tạo biến với biểu thức dựa trên biến khác và các ngôn ngữ khác (ví dụ C) quản lý nó hoàn toàn tốt. – Alnitak