js之function对象和闭包函数
<script> // Function对象的call和apply方法:可以用来调用所有者对象作为参数的方法,通过call和apply方法,能够使用属于另一个对象的方法。 //call() 和 apply() 之间的区别:call() 方法分别接受参数。apply() 方法接受数组形式的参数。如果要使用数组而不是参数列表,则 apply() 方法非常方便。 var personFunc = { fullName: function (city, country) { return this.firstName + " " + this.lastName + "," + city + "," + country; }, }; var person = { firstName: "Bill", lastName: "Gates", }; console.log(personFunc.fullName.apply(person, ["Oslo", "Norway"])); //Bill Gates,Oslo,Norway console.log(personFunc.fullName.call(person, "Seattle", "USA")); //Bill Gates,Seattle,USA let fullName = personFunc.fullName.bind(person); console.log(fullName("Seattle", "USA")); //Bill Gates,Seattle,USA Math.max(1, 2, 3); // 会返回 3 // 在数组上模拟 max 方法 Math.max.apply(null, [1, 2, 3]); // 也会返回 3 //闭包函数 // 简称“闭包”,指的是有权访问另一个函数作用域内的变量(局部变量)的函数。 // 即函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。 // 内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必需访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)的值是外部函数返回时的值,但也会受到内部函数的影响 // 闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。 // 注意::由于闭包会使函数中的变量一直保存在内存中,内存消耗很大,所以闭包的滥用可能会降低程序的处理速度,造成内存消耗等问题。 var add = (function () { var counter = 0; return function () { return (counter += 1); }; })(); </script>
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix