1
我写了一个接受对象作为参数的函数。所述对象包含各种附加参数。这与许多jQuery函数一样工作。确保函数库内的函数在范围参数中调用
什么是确保对象包含所需最小参数的最佳方法,以及如何将缺省值分配给那些不需要的参数?
这是我现在正在做的。
/*
\t var options = {
\t \t ListTitle: "",
\t \t WebPartID: "",
\t \t DisplayField: "Title",
\t \t EnforceUnique: true,
\t \t AllowEmpty: true,
\t \t RequireSelection: true,
\t \t NoSelectionMessage: "Please Select a Value",
\t \t ConnectedWebPartID: ""
\t }
\t */
\t //Set Defaults.
\t dropdownFilterOptions.DisplayField = (typeof dropdownFilterOptions.DisplayField === "undefined" ? "Title" : dropdownFilterOptions.DisplayField);
\t dropdownFilterOptions.EnforceUnique = (typeof dropdownFilterOptions.EnforceUnique === "undefined" ? true : dropdownFilterOptions.EnforceUnique);
\t dropdownFilterOptions.AllowEmpty = (typeof dropdownFilterOptions.AllowEmpty === "undefined" ? true : dropdownFilterOptions.AllowEmpty);
\t dropdownFilterOptions.RequireSelection = (typeof dropdownFilterOptions.RequireSelection === "undefined" ? true : dropdownFilterOptions.RequireSelection);
\t dropdownFilterOptions.NoSelectionMessage = (typeof dropdownFilterOptions.NoSelectionMessage === "undefined" ? "Please select a value." : dropdownFilterOptions.NoSelectionMessage);
\t //Parameter Validation.
\t var parameterValidationSuccess = true;
\t if (typeof dropdownFilterOptions.ConnectedWebPartID === "undefined") {
\t \t throw "ConnectedWebPartID is required!";
\t \t parameterValidationSuccess = false;
\t }
\t if (typeof dropdownFilterOptions.ListTitle === "undefined") {
\t \t throw "ListTitle is required.";
\t \t parameterValidationSuccess = false;
\t }
\t if (typeof dropdownFilterOptions.WebPartID === "undefined") {
\t \t throw "WebPartID is required.";
\t \t parameterValidationSuccess = false;
\t }
\t if (!parameterValidationSuccess) return;
谢谢!我会反对使用Object.Assign来分配默认值,但我仍然会寻找更好的方法来检查所需的参数。 –