Lý lịch
Tôi có một hàm lấy một config
đối tượng làm đối số. Trong hàm, tôi cũng có default
đối tượng. Mỗi đối tượng đó chứa các thuộc tính về cơ bản hoạt động như cài đặt cho phần còn lại của mã bên trong hàm. Để tránh phải chỉ định tất cả các cài đặt trong config
đối tượng, tôi sử dụng extend
phương thức của jQuery để điền vào một đối tượng mới,settings
với bất kỳ giá trị mặc định nào từ default
đối tượng nếu chúng không được chỉ định trong config
đối tượng:
var config = {key1: value1};
var default = {key1: default1, key2: default2, key 3: default 3};
var settings = $.extend(default, config);
//resulting properties of settings:
settings = {key1: value1, key2: default2, key 3: default 3};
Vấn đề
Điều này hoạt động tốt, nhưng tôi muốn tái tạo chức năng này mà không cần jQuery. Có cách nào thanh lịch không kém (hoặc gần giống) để làm điều này với javascript đơn giản không?
Chỉnh sửa: Biện minh không trùng lặp
Câu hỏi này không trùng lặp với câu hỏi " Làm cách nào để hợp nhất động các thuộc tính của hai đối tượng JavaScript? " Trong khi câu hỏi đó chỉ đơn giản là muốn tạo một đối tượng chứa tất cả các khóa và giá trị từ hai đối tượng riêng biệt - tôi đặc biệt muốn giải quyết cách thực hiện điều này trong trường hợp cả hai đối tượng chia sẻ một số nhưng không phải tất cả các khóa và đối tượng nào sẽ được ưu tiên ( mặc định) cho đối tượng kết quả trong trường hợp có các khóa trùng lặp. Và thậm chí cụ thể hơn, tôi muốn giải quyết việc sử dụng phương thức của jQuery để đạt được điều này và tìm một cách thay thế để làm điều đó mà không cần jQuery. Mặc dù nhiều câu trả lời cho cả hai câu hỏi trùng nhau, nhưng điều đó không có nghĩa là bản thân các câu hỏi đều giống nhau.