2015-03-08 22 views

Trả lời

20

Theo gạch documentation, Các api của phương pháp _.extend là

_.extend(destination, *sources) 

Mẫu đầu tiên

_.extend(parent, child); 

Trong mã mẫu này, bạn đang thực sự mở rộng các thuộc tính từ đối tượng trẻ em đối tượng cha. Ở đây đối tượng cha được sửa đổi.

Thứ hai mẫu

_.extend({}, parent, child); 

Trong trường hợp bạn không muốn thay đổi các đối tượng phụ huynh, và vẫn muốn cả tài sản từ cha mẹ và con. Bạn có thể sử dụng cái này. Ở đây bạn được mở rộng đối tượng phụ huynh, và đối tượng trẻ em đến một đối tượng mới.

+0

Vì vậy, nếu tôi sử dụng cách tiếp cận đầu tiên nhiều lần với các trẻ khác nhau, tôi sẽ có một phụ huynh có tất cả các chức năng của những đứa trẻ khác nhau. Đúng? Điều tương tự với cách tiếp cận thứ hai mang lại cho tôi toàn bộ các đối tượng khác nhau. – JustBasti

+0

bạn không cần phải gọi nhiều lần, bạn có thể có n các đối số. U có thể làm một cái gì đó như _.extend (cha mẹ, child1, child2, chilld3, child4) ;. Vì vậy, cha mẹ sẽ có tất cả các thuộc tính của child1,2,3 và 4 –

2

mở rộng phương pháp gạch của ghi đè đối số đầu tiên được truyền cho nó. Nhưng hầu hết thời gian bạn không muốn điều đó. Bạn chỉ muốn một đối tượng khác mà đối tượng thứ hai được mở rộng bằng phương thức đầu tiên.

Vì vậy, bạn vượt qua một đối tượng rỗng như các đối tượng container cho kết quả.

var grandChild = _.extend({}, parent, child);

5

Hãy ví dụ này:

myConfig = { name: 'bob' } 

yourConfig = { name: 'sam' } 

_.extend(myConfig, yourConfig); 

Bây giờ, myConfig được clobbered. Tôi đã ghi đè giá trị ban đầu của myConfig.name, và tôi không bao giờ có thể lấy lại.

Để giữ myConfigyourConfig, tôi cần phải kết hợp cả hai vào một đối tượng thứ 3:

myConfig = { name: 'bob' } 

yourConfig = { name: 'sam' } 

sharedConfig = _.extend({}, myConfig, yourConfig); 
Các vấn đề liên quan