2010-07-08 53 views
11

Có thể tạo thuộc tính trên đối tượng javascript hoạt động tương tự như thuộc tính trong C# hay không.Tạo thuộc tính javascript như thuộc tính C#

Ví dụ: Tôi đã tạo tiện ích con chỉnh sửa kích thước tự động bằng cách sử dụng dojo. Để có được các "giá trị" tài sản ra khỏi widget của tôi, tôi đã nối với sự kiện onchange và tôi đang thiết lập một biến mọi lúc giá trị của các thay đổi textarea.

Có cách nào để thực hiện việc này mà không cần kết nối với sự kiện trao đổi.

Sửa

Nói cách khác, là nó có thể viết một cái gì đó trong JavaScript hoạt động như thu khí và/hoặc setters.

Trả lời

15

Có thể trong ECMAScript 5 triển khai, trong đó bao gồm recent versions of all major browsers. Đặc tả ECMAScript 5 bổ sung thêm các getters và setters tiêu chuẩn hóa. Một điều không may là IE 8 có tính năng này, nhưng chỉ trên các nút DOM. Đây là những gì cú pháp trông giống như:

var obj = {}; 

Object.defineProperty(obj, "value", { 
    get: function() { 
     return this.val; 
    }, 
    set: function(val) { 
     this.val = val; 
    } 
}); 

Cũng có một thực hiện độc quyền của getter và setter trong Mozilla trong một thời gian dài mà cũng được sau đó được thông qua bởi WebKit và Opera nhưng điều này không có sẵn trong trình duyệt IE.

-1

Tôi không chắc chắn những gì bạn đang yêu cầu ở đây. Bạn luôn có thể nhận được giá trị của một vùng văn bản mà không có sự kiện onchange. bạn phải có đối tượng rồi nhìn vào thuộc tính giá trị.

ví dụ, nếu textarea của bạn có id = "myText" bạn có thể làm

var mytextarea = document.getElementById("mytext"); 
var text = mytextarea.value; 
+0

Tôi biết John nhiều đến thế. Cảm ơn bạn. Tôi đã chỉnh sửa câu hỏi của mình. Tôi hy vọng nó rõ ràng hơn một chút. –

+0

nó dường như không rõ ràng hơn với tôi. Bạn đang tìm kiếm để thêm logic để getter tài sản và setter? – Davy8

+1

Chính xác là nó –

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