พื้นหลัง
ฉันมีฟังก์ชันที่ใช้config
วัตถุเป็นอาร์กิวเมนต์ ภายในฟังก์ชันฉันยังมีdefault
วัตถุ แต่ละออบเจ็กต์เหล่านั้นมีคุณสมบัติที่ทำงานเป็นการตั้งค่าสำหรับส่วนที่เหลือของโค้ดภายในฟังก์ชัน เพื่อป้องกันไม่ให้ระบุการตั้งค่าทั้งหมดภายในconfig
ออบเจ็กต์ฉันใช้extend
วิธีการของ jQuery เพื่อกรอกข้อมูลในวัตถุใหม่settings
ด้วยค่าเริ่มต้นใด ๆ จากdefault
วัตถุหากไม่ได้ระบุไว้ในconfig
วัตถุ:
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};
ปัญหา
ใช้งานได้ดี แต่ฉันต้องการสร้างฟังก์ชันนี้ซ้ำโดยไม่ต้องใช้ jQuery มีวิธีการที่สง่างามเท่าเทียมกัน (หรือใกล้เคียงกับ) ในการทำสิ่งนี้ด้วยจาวาสคริปต์ ol ธรรมดาหรือไม่?
แก้ไข: เหตุผลที่ไม่ซ้ำกัน
คำถามนี้ไม่ซ้ำกับคำถาม " ฉันจะผสานคุณสมบัติของวัตถุ JavaScript สองรายการแบบไดนามิกได้อย่างไร " ในขณะที่คำถามนั้นต้องการสร้างวัตถุที่มีคีย์และค่าทั้งหมดจากวัตถุสองชิ้นที่แยกจากกัน - ฉันต้องการกล่าวถึงวิธีการทำเช่นนี้ในกรณีที่วัตถุทั้งสองใช้คีย์ร่วมกัน แต่ไม่ใช่ทั้งหมดและวัตถุใดจะได้รับความสำคัญ ( ค่าดีฟอลต์) สำหรับอ็อบเจ็กต์ผลลัพธ์ในกรณีที่มีคีย์ซ้ำกัน และโดยเฉพาะอย่างยิ่งฉันต้องการพูดถึงการใช้วิธีการของ jQuery เพื่อให้บรรลุสิ่งนี้และหาวิธีอื่นในการทำเช่นนั้นโดยไม่ใช้ jQuery แม้ว่าหลายคำตอบของคำถามทั้งสองจะทับซ้อนกัน แต่ก็ไม่ได้หมายความว่าคำถามนั้นจะเหมือนกัน