2012-03-19 38 views

Trả lời

12

Nếu bạn nhìn vào mã nguồn, chức năng get chỉ cần gọi đến this.attributes[name].

http://backbonejs.org/docs/backbone.html#section-31

Lợi ích, tuy nhiên, ít nhất là hai lần:

1) một API phù hợp làm giảm số lượng mã bạn đang viết

2) khả năng để ghi đè lên Phương pháp get và cung cấp điều khiển truy cập phức tạp hơn

Ví dụ, có một số bổ trợ cho xương sống ghi đè cách thức hoạt động của mô hình nhằm cung cấp khả năng mô hình lồng nhau. nó rất dễ dàng cho họ để cho phép bạn viết một phương thức get như thế này:

model.get("submodel.attr")

và có mà phân tích ra các attr của submodel tiểu mô hình. Nếu không có phương thức get, nó sẽ khó khăn hơn để làm cho điều này phù hợp với API.

Lợi ích cơ bản từ việc này là đóng gói. Cho đến khi JavaScript cung cấp các thuộc tính get/set đúng cho phép chúng ta viết mã cho các getters và setters, chúng ta sẽ bị mắc kẹt với các phương thức work-around như Backbone's getset.

+1

Bạn có thể làm rõ cách 'user.get ('name')' vs 'user.name' làm giảm số lượng mã không? –

+0

Tôi đoán anh ta có nghĩa là bạn sử dụng 'user.get ('name')' thay vì 'user.attributes ['name']' dài hơn. Tuy nhiên, để truy cập vào các mô hình lồng nhau, tôi sẽ sử dụng cú pháp này: 'user.attributes.name.first' – orad

2

Vâng .. cho người mới bắt đầu, model.attribute hoàn toàn KHÔNG chính xác. Cần có model.set() để nhận được change sự kiện cần kích hoạt. Bạn rất có thể quên điều này nếu bạn có thói quen sử dụng model.attributes[attribute] thay vì model.get(attribute)

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