2017-09-03 4 views
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;

答えて

1

私は必要なオブジェクトのプロパティをチェックするための近道は(それを1つずつ行う必要があります)ありませんね。誰かがよく知っているなら、私を修正してください!不要なパラメータに何かを割り当てるための

は、Object.assign()は良い選択です:

// parameterObject is passed into the function 
// parameterObject === { prop1: "Peter", prop3: "yep", prop4: 500 } 
var defaultObject = { prop1: "default value 1", prop2: "default value 2" }; 
var finalObject = Object.assign(defaultObject, parameterObject); 
// finalObject === { prop1: "Peter", prop2: "default value 2", prop3: "yep", prop4: 500 } 

関数に渡されるparameterObject、上方、defaultObjectに割り当てられています。これにより、parameterObjectから検出されるdefaultObjectのプロパティはすべてオーバーライドされますが、defaultObjectの一部のみであるプロパティはそのまま残ります。

MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

+0

ありがとうございました!私は挑戦的にObject.Assignを使用してデフォルトを割り当てますが、必要なパラメータをチェックするためのより良い方法を探します。 –

関連する問題