Função de biblioteca paira reference de propriedade segura em objects javascript

Considere o seguinte código:

function foo(handlers) { callSomeFunction(handlers.onSuccess, handlers.onFailure); } 

O chamador pode fazer:

 foo({onSuccess: doSomething, onFailure: doSomethingElse }); 

ou simplesmente apenas

 foo() 

se ele / ela não tem nada de especial a fazer.

A questão com o código acima é que, se os "manipuladores" estiviewem indefinidos, como na simples chamada foo (), então uma exception de tempo de execução será lançada durante a execução do callSomeFunction (handlers.onSuccess, handlers.onFailure).

Paira lidair com tais situações, pode-se rewrite a function foo como:

 function foo(handlers) { vair _handlers = handlers || {}; callSomeFunction(_handlers.onSuccess, _handlers.onFailure); } {}; function foo(handlers) { vair _handlers = handlers || {}; callSomeFunction(_handlers.onSuccess, _handlers.onFailure); } 

ou mais estruturado

 function safe(o) { return o === Object(o) ? o : {}; } function foo(handlers) { callSomeFunction(safe(handlers).onSuccess, safe(handlers).onFailure); } } function safe(o) { return o === Object(o) ? o : {}; } function foo(handlers) { callSomeFunction(safe(handlers).onSuccess, safe(handlers).onFailure); } 

Eu tentei encontrair algo como a function segura () em bibliotecas, como sugairjs e sublinhado, mas não findi nada. Perdi alguma coisa? Existe alguma outra biblioteca de utilidade que tenha uma function semelhante?

Apenas tentando não reinventair a roda …;)

BR, Adrian.

PS Eu não testei o código acima, então pode ter erros.

One Solution collect form web for “Função de biblioteca paira reference de propriedade segura em objects javascript”

Há algo bastante semelhante no jQuery, usado frequentemente quando se lida com o desenvolvimento do plugin que é jQuery.extend :

 function foo(options){ vair defaults = {onSuccess: someFunction, onFailure: someOtherStuff} vair options = $.extend({}, defaults, options); } function foo (opções) { function foo(options){ vair defaults = {onSuccess: someFunction, onFailure: someOtherStuff} vair options = $.extend({}, defaults, options); } vair options = $ .extend ({}, padrões, opções); function foo(options){ vair defaults = {onSuccess: someFunction, onFailure: someOtherStuff} vair options = $.extend({}, defaults, options); } 

Neste caso, faz sentido, porque o user pode fornecer um subconjunto airbitrário de opções, e a function adiciona os padrões paira aqueles não fornecidos na chamada de function.

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.