2011-02-01 41 views
12

nói rằng tôi cóbiến tham chiếu trong đối tượng theo nghĩa đen?

myfunc({ 
    var1: 1, 
    var2: 2, 
}) 

nếu tôi muốn có một giá trị mà làm cho sử dụng của đối tượng giấu tên hiện nay, làm thế nào tôi sẽ làm điều này?

ví dụ nếu tôi muốn

myfunc({ 
    var1: 1, 
    var2: 2, 
    var3: this.var1 + this.var2 
}) 

rõ ràng điều này không hoạt động.

Cú pháp chính xác sẽ là gì?

Trả lời

4

Thật không may, điều đó là không thể. Trong khi một đối tượng theo nghĩa đen đang được xây dựng, không có tham chiếu bên ngoài đối tượng đó tồn tại cho đến khi toàn bộ chữ được đánh giá. Cách duy nhất để sử dụng this ở giai đoạn này là sử dụng một constructor thay vì:

function MyObject() { 
    this.var1 = 1; 
    this.var2 = 2; 
    this.var3 = this.var1 + this.var2; 
} 

myfunc(new MyObject()); 
3

Bạn không thể làm điều đó trong các ký hiệu bạn đang sử dụng. Một đối tượng theo nghĩa đen không có bất kỳ khái niệm nào của chính nó trong ngữ cảnh này.

16

Bạn có thể làm var3 một chức năng, và gọi đó là sẽ cho phép bạn sử dụng 'này':

x= { 
    v1:4, 
    v2:5, 
    v3:function(){return this.v1 + this.v2;} 
}; 

alert(x.v3()); 
+3

Chính xác những gì OP muốn tôi nghĩ. – Nathan

+3

Vấn đề là cú pháp là khác nhau x.v1 và x.v3(). – IvanH

-3

Tôi thấy điều này về biến và đối tượng trực trên web. Tôi hi vọng cái này giúp được! click here

+1

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – juliocesar

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