gpt4 book ai didi

javascript - 用于 javascript 对象的安全属性引用的库函数

转载 作者:数据小太阳 更新时间:2023-10-29 05:33:57 30 4
gpt4 key购买 nike

考虑以下代码:

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

调用者可以:

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

或者只是

foo()

如果他/她没有什么特别的事情要做。

上述代码的问题在于,如果未定义“处理程序”,就像上面简单的 foo() 调用一样,那么在执行 callSomeFunction(handlers.onSuccess, handlers.onFailure) 期间将抛出运行时异常).

为了处理这种情况,可以将 foo 函数重写为:

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

或更结构化

function safe(o) {
return o === Object(o) ? o : {};
}

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

我试图在 sugarjs 和 underscore 等库中找到类似 safe() 函数的东西,但一无所获。我错过了什么?有没有其他实用程序库有类似的功能?

只是不想重新发明轮子...;)

BR,阿德里安。

附言上面的代码我没有测试,所以可能有错误。

最佳答案

在 jQuery 中有一些非常相似的东西,在处理插件开发时经常使用它是 jQuery.extend :

function foo(options){
var defaults = {onSuccess: someFunction, onFailure: someOtherStuff}
var options = $.extend({}, defaults, options);
}

在这种情况下,这是有道理的,因为用户可以提供任意选项子集,并且函数会为函数调用中未提供的选项添加默认值。

关于javascript - 用于 javascript 对象的安全属性引用的库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013726/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com