JavaScript高级程序设计:Function类型与引用类型深入解析

0 下载量 136 浏览量 更新于2024-08-28 收藏 136KB PDF 举报
"这篇学习笔记主要涵盖了JavaScript中的引用类型,特别是Function类型,包括函数声明、定义、函数表达式,以及函数内部属性和方法。此外,笔记还提到了基本包装类型,如Boolean、Number和String,以及相关的字符串方法。" 在JavaScript中,引用类型是一个重要的概念,不同于基本类型,它们是可变的并且可以拥有属性和方法。Function类型是所有函数的基础,每一个函数都是Function类型的实例。函数在JavaScript中有三种定义方式:函数声明、函数表达式和使用Function构造函数。函数声明如`function sum(num1, num2) {...}`会在代码执行前被提升,而函数表达式如`var sum = function(num1, num2) {...}`则是在运行时创建的。 函数声明和定义的差异在于,声明会被提前到当前作用域的顶部,而表达式不会。Function构造函数允许动态创建函数,例如`new Function("param1", "param2", "return param1 + param2")`,但这不被推荐使用,因为效率较低。 在JavaScript中没有函数重载的概念,如果两个函数同名,后面的函数会覆盖前面的。这是因为函数名本质上是函数对象的引用,而不是实际的函数体。 Function类型的方法包括`call()`、`apply()`和`bind()`。`call()`和`apply()`用来改变函数调用的上下文(即`this`的值),同时传递参数。`call()`直接传入参数列表,`apply()`则使用数组或类数组对象传递参数。`bind()`方法则返回一个新的函数,该函数的`this`被绑定到指定的对象,同时还可以预设参数。 基本包装类型包括Boolean、Number和String。这些类型用于包装原始的布尔值、数字和字符串,使得它们可以有方法和属性。例如,String类型提供了许多处理字符串的方法,如字符方法(charAt、charCodeAt等)、操作方法(concat、slice等)、位置方法(indexOf、lastIndexOf等)、trim方法(去除两端空白字符)、大小写转换方法(toUpperCase、toLowerCase)以及模式匹配方法(match、replace、search等)。此外,还有localeCompare方法用于比较字符串的本地化顺序,fromCharCode方法用于根据Unicode编码创建字符串。 全局对象Global包含了全局变量和全局函数,如URI编码方法`encodeURI()`和`encodeURIComponent()`,以及危险的`eval()`函数,它会执行一个字符串作为JavaScript代码。`window`对象是浏览器环境中的全局对象,它包含了一些内置方法和属性。`Math`对象提供了数学常量和函数,如最小值`min()`、最大值`max()`、舍入方法(round、ceil、floor)以及随机数生成`random()`。 总结,这篇学习笔记深入探讨了JavaScript中与函数相关的高级特性,以及基本类型和对象的细节,是深入理解JavaScript编程的重要参考资料。