SteelToeは、オブジェクトの未定義のプロパティへのアクセスの問題を解決するために設計された小さなjavascriptスニペットです。 これは、ネストされたプロパティにアクセスする場合に特に重要です。 また、autovivificationの可能性も実装します。これにより、目的のプロパティを順番に作成しやすくなります。 一般的に、OOPではかなり健康的な砂糖です。
値を取得する
最初の方法
var object = { info: { name: { first: 'Jonathan', last: 'Clem' } } } steelToe(object)('info')('name')('last')();
第二の方法
var object = { info: { name: { first: 'Jonathan', last: 'Clem' } } } steelToe(object).walk('info.name.last');
値の定義
var jonathan = { info: { name: { first: 'Jonathan', last: 'Clem' } } }, steelToe(jonathan).set('info.name.middle', 'Tyler'); steelToe(jonathan).set('info.favorites.movie', 'Harold & Maude'); jonathan.info.name.middle;
ここで何が起こっているの
想像してみてください-たとえば、JSONから取得したプロパティの大きなネストを持つ複雑なJavascriptオブジェクトがあるとします。 そして、例えば、次のようなことをする必要があります:
var fatherFirstNames = []; for (var i = 0; i < families.length; i ++) { var first = families[i].father.info.name.first; if (first) { fatherFirstNames.push(first); } }
-Bliiin!、あなたが言う-脚の愚かなショット! TypeErrorエラーは簡単に抜け落ち
TypeError
。なぜなら、
father
プロパティが定義されていること、または必要なプロパティがあることを保証するものではありません。 通常、この種のエラーを防ぐために、次のような悲惨さを書きます。
var farherFirstNames = []; for (var i = 0; i < families.length; i++) { var father = families[i].father; if (father && father.info && father.info.name && father.info.name.first) { fatherFirstNames.push(father.info.name.first); } }
Bueee ... SteelToeがこの問題をいかにエレガントに解決するかをご覧ください!
var fatherFirstNames = []; for (var i = 0; i < families.length; i++) { var name = steelToe(families[i]).walk('father.info.name.first'); if (name) { fatherFirstNames.push(name); } } fatherFirstNames;
もう
TypeError
ありません! 幸福!
ライブラリは
、サイトと
githubに表示されます。