标题为“javascript 精粹笔记”的这份文档显然是一份针对JavaScript语言的学习和应用技巧的集合。JavaScript是一种广泛应用于Web前端开发的脚本语言,随着互联网技术的发展,JavaScript的应用越来越广泛,不仅限于浏览器端,还包括服务器端(例如Node.js)以及各种框架和库的实现(如jQuery、React等)。 在文档的描述中,提到的“js下应用技巧”可能包含了一些针对JavaScript编程语言的实用方法和模式。这些技巧可以帮助开发者编写出更加高效、简洁、易于维护的代码。 下面将从文档提供的部分内容中提取知识点,并详细阐述。 1. 扩展JavaScript构造函数的原型添加方法 在JavaScript中,对象的方法可以通过构造函数的原型链来扩展,以让所有通过该构造函数创建的实例共享这些方法。文档中展示了一个示例,即为Function的原型和Number的原型添加了名为“integer”的方法。 ```javascript Function.method=function(name,func){ this.prototype[name]=func; } Number.method("integer",function(){ return Math[this<0?'ceil':'floor'](this); }); ``` 这里创建了一个名为“integer”的方法,它根据Number对象的值,返回向上取整或向下取整的结果。使用时可以这样调用:`(-10/3).integer();`,得到的结果是`-3`。 2. 使用闭包(Closure) 闭包是JavaScript语言的核心概念之一。文档中给出的闭包示例如下: ```javascript var quo=function(status){ return { get_status:function(){ return status; } } } var myQuo = new quo("amazed"); myQuo.get_status(); // "amazed" ``` 这里的`quo`函数返回了一个包含`get_status`方法的对象。`get_status`方法返回的是外部函数`quo`的参数`status`,形成了一个闭包。即使外部函数执行完毕,内部函数仍然可以访问其作用域中的变量。 3. 使用闭包实现事件处理 文档中还展示了如何使用闭包处理JavaScript中常见的事件绑定问题。 ```javascript for(var i=0; i<lis.length; i++){ lis.onclick=function(i){ return function(){ alert(i); }; }(i); } ``` 在这个例子中,使用了立即执行函数表达式(IIFE)来创建一个闭包,捕获每次迭代中的`i`值。如果不使用闭包,通常会遇到所有事件监听器都使用同一个变量的问题,导致点击事件最终显示的是循环结束时的`i`值。 4. 函数的柯里化(Currying) 函数柯里化是将接受多个参数的函数转换为一系列只接受单一参数的函数的技术。 ```javascript Function.method("curry",function(){ var slice = Array.prototype.slice, args = slice.apply(arguments), that = this; return function(){ return that.apply(null, args.concat(slice.apply(arguments))); } }); ``` 上述代码定义了一个名为“curry”的方法,它允许你把接受多个参数的函数转换成一系列接受单一参数的函数。这样的好处是可以预先填充一些参数,或者为了延迟函数的执行时机。 5. 记忆化(Memoization) 记忆化是一种优化技术,主要用于优化那些对同一组输入参数返回相同结果的函数,以提高程序的执行速度。 ```javascript var memoization = function(memo, usefn) { var fn = function(n){ var result = memo[n]; if(typeof result !== 'number'){ result = usefn(fn, n); memo[n] = result; } return result; }; return fn; }; var factorial = memoization([0,1], function(fn, n) { return fn(n-1)*n; }); factorial(5); // 120 ``` 上述代码实现了一个名为`memoization`的函数,它缓存了函数`fn`的执行结果,以避免重复计算。这种方式特别适用于递归函数,如阶乘函数,因为它们在处理某些特定输入时会产生大量重复的计算。 这些从文档中提取的知识点,对于学习和应用JavaScript语言,掌握其深层次的技巧和模式有着积极的指导意义。无论是JavaScript的初学者,还是希望进一步提升自己在Web前端开发中技能的专业人士,这些技巧都能够提供很好的参考和帮助。
- 粉丝: 8
- 资源: 876
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助