直接来主题,给大家分享一些Javascript一些属性以及方法的使用小技巧。
回调
函数可以让不连续时间的处理变得更容易。例如:假定有这么一个序列,由用户交互开始,向服务器发送请求,最终现实服务器的响应。最简单的写法可能是这样的:
1
这种方式的问题在于网络上的同步请求将会导致客户端进入假死状态。如果网络传输或者服务器很慢,响应性的降低是不可接受的。
更好的方式就是发起异步请求,提供一个当服务器的相应到达时将被调用的回调函数。异步的函数立即返回,这样客户端就不会被阻塞。
2
我们传递了一个函数作为参数给 send_request_asynchronously 函数,它将在收到响应时被调用。
模块
我们可以使用函数和闭包来构造模块。模块是一个提供接口却隐藏状态与现实的函数或对象。通过使用函数去生产模块,我们机会可以完全摒弃全局变量的使用,从而缓解这个JavaScript的最为糟糕的特性之一所带来的影响。
打个比方,假设我们要给 String 增加一个 deentityify 方法。它的认识是寻找字符串中的HTML 自附体并替换为它们对应的字符。在一个对象中保存字符实体的名字和它们中,但是全局变量是魔鬼。我们可以把它定义在函数本身,但是那有运行时的损耗,因为该函数在每次被执行的时候该字面量都会被求值一次。理想的方式是将它放入一个闭包,而且也许还能提供一个增加更多字符实体的拓展方法:
3
这都是术语JavaScript的干货,如果有在学习前端或者想学习前端的朋友,可以一起来我们的前端群621071874,大家一起学习进步,解决问题,当然群里还有各种经典案例以及面试小技巧供大参考。
套用
函数也是值,从而我们可以用有趣的方式去操作函数值。套用允许我们将函数与传递给它的参数相结合去产生出的一个新的函数。
4
add1是把函数传递给add函数的curry方法后创建的一个函数。add1函数把传递给它的参数的值+1.JavaScript并没有 curry 方法,但是我们可以通过给 Function.prototype 添加功能开来实现。
5
curry 方法通过创建一个保留着原始函数和被套用的参数的闭包来工作。它返回另外一个函数,该函数被调用时,会返回调原始函数的结果,并传递调用 curry 时的参数加上当前调用的参数的所有参数。使它用 Array 和 concat 方法去连接两个参数数组。
不好的是, arguments 数组并不是一个真正的数组,所以它并没有 concat 方法。要避开这个问题,我们必须在两个 arguments 数组上都应用数组的 slice 方法。这样产生出拥有 concat 方法的常规数组。
6
这仅仅只是部分小技巧,如有想获取更多的小技巧还请关注我的前端小群哦!!!
到这,其实我也想把我珍藏许久的与大家分享一下,毕竟程序员也是男人,没什么好解释的。