JavaScript第五章

本文深入讲解JavaScript中的核心数据类型,包括Object、Array、Date、RegExp、Function及基本包装类型如Boolean、Number和String。探讨了每种类型的创建、属性、方法及其实现细节,如数组的栈和队列方法、正则表达式的模式匹配、日期对象的时间格式化等。
摘要由CSDN通过智能技术生成
JavaScript第五章
  • object类型

    • 实现方法

      • new操作符跟Object函数

        ‘var person = new Object();’

      • 用对象字面量表示

        'var person = {

        name : “Nicholas”,

         age : 29 
        

        }; ’

    • 对象的访问方法

      • 点表示法

      • 方括号表示法

        ’ var propertyName = “name”;

        alert(person[propertyName]); ’

  • array类型

    • 创建方法

      • 'var colors = new Array(); ’

      • 'var colors = [“red”, “blue”, “green”]; ’

    • 读取操作(跟其他语言差不多)

    • 检测数组

      • if (value instanceof Array){

        //对数组执行某些操作 
        

        }

    • 转换方法

      • 'var colors = [“red”, “blue”, “green”]; // 创建一个包含 3 个字符串的数组

        alert(colors.toString()); // red,blue,green

        alert(colors.valueOf()); // red,blue,green

        alert(colors); // red,blue,green ’

      • toLocaleString()方法

        经常也会返回与 toString()和 valueOf()方法相同的值

      • join()方 法

        'var colors = [“red”, “green”, “blue”];

        alert(colors.join(",")); //red,green,blue alert(colors.join("||")); //red||green||blue’

    • 栈方法

      • push()方法

        以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度

      • pop()方法

        从数组末尾移除后一项,减少数组的 length 值,然后返回移除的项

    • 队列方法

      • shift()方法

        移除数组中的第一个项并返回该项,同时将数组长度减 1

      • unshift()方法

      在数组前端添加任意个项并返回新数组的长度

    • 重排序方法

      • reverse():会反转数组项的顺序

      • sort():按升序排列数组项——即小的值位于前面,大的值排在后面

    • 操作方法

      • concat()方法

        可以基于当前数 组中的所有项创建一个新数组

      • slice()方法

        法可以 接受一或两个参数,即要返回项的起始和结束位置

      • splice()方法

      删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。

      插入:可以向指定位置插入任意数量的项,只需提供 3个参数:起始位置、0(要删除的项数) 和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。

      替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起 始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等

    • 位置方法

    • indexOf()

    > indexOf()方法从数组的开头(位 置 0)开始向后查找
    
    • lastIndexOf()

      从数组的末尾开始向前查找

    • 迭代方法

      every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
      filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。

      forEach():对数组中的每一项运行给定函数。这个方法没有返回值。

      map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

      some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。

    • 归并方法

    • reduce()

      从数组的第一项开始,逐个遍历 到后

    • reduceRight()

    > 数组的后一项开始,向前遍历到第一项
    
  • Date 类型

    • Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日 期的毫秒数

    • 参数分别是年份、基于 0的月份(一月是 0,二月是 1,以此类推)、月中的哪一天 (1 到 31)、小时数(0 到 23)、分钟、秒以及毫秒数。在这些参数中,只有前两个参数(年和月)是必 需的

  • 继承的方法

    • toLocaleString()

      Firefox 3.5

      toLocaleString() — Thursday, February 01, 2007 12:00:00 AM toString() — Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)

    • toString()

    Chrome 4

    toLocaleString() — Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time) toString() — Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)

    • valueOf()

      不返回字符串,而是返回日期的毫秒表示(便于比较大小)

    • 时间的格式化方法

      toDateString()——以特定于实现的格式显示星期几、月、日和年; toTimeString()——以特定于实现的格式显示时、分、秒和时区; toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年;

      toLocaleTimeString()——以特定于实现的格式显示时、分、秒; toUTCString()——以特定于实现的格式完整的 UTC日期。 与

  • RegExp 类型

    • g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即 停止;

      • i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;

        • m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模 式匹配的项

/* * 匹配字符串中所有"at"的实例 */

var pattern1 = /at/g;

/* * 匹配第一个"bat"或"cat",不区分大小写 */

var pattern2 = /[bc]at/i;

  • 实例方法

  • exec()

> 接受一个参数,即 要应用模式的字符串,然后返回包含第一个匹配项信息的数组;;或者在没有匹配项的情况下返回 null。 
  • test()
> 接受一个字符串参数。在模式与该参数匹配的情况下返回 true;否则,返回 false
  • RegExp构造函数属性

  • input$_近一次要匹配的字符串。Opera未实现此属性
    lastMatch$&近一次的匹配项。Opera未实现此属性
    lastParen$+近一次匹配的捕获组。Opera未实现此属性
    leftContext$`input字符串中lastMatch之前的文本
    multiline$*布尔值,表示是否所有表达式都使用多行模式。IE和Opera未实现此属性
    rightContext$’Input字符串中lastMatch之后的文本
  • Function 类型

    • v函数都是 Function 类型的实例,而且都与其他引用类型一样具有属性和方法。由于函 数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定(函数是对象)

    • 声明方法

      • 直接声明

      function sum (num1, num2) {

      return num1 + num2;

      }

      • 对象声明

        var sum = new Function(“num1”, “num2”, “return num1 + num2”);

    • 没有重载

    • 在创建第二个函数时,实际上覆盖 了引用第一个函数的变量

    • 函数声明与函数表达式

    • 解析器会率先读取函数声明,并使其在执行 任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真 正被解释执行

  • 作为值的函数

  • ECMAScript中的函数名本身就是变量,所以函数也可以作为值来使用。

  • 函数内部属性

    • arguments

      • callee 属性,该属性是一个指针,指向拥有这个 arguments 对象的函数

      • 为 了消除这种个函数的执行与函数名 紧密耦合的现象

    • this

    • 为与 Java和 C#中的 this 大致类似

  • 函数属性和方法

    • 每个函数都包含两个 属性:length 和 prototype。其中,length 属性表示函数希望接收的命名参数的个数,prototype 是保存它们所有实例方法的真正所在(prototype 属性是不可枚举的,因此使用 for-in 无法发现)

    • apply()

      • apply()方法接收两个参数:一个 是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是 Array 的实例,也可以是 arguments 对象
    • call()

    • 在使用 call()方法时,传递给函数的参数必须逐个列举出来

  • 基本包装类型

  • Boolean

    • Boolean 类型是与布尔值对应的引用类型。要创建 Boolean 对象,可以像下面这样调用 Boolean 构造函数并传入 true 或 false 值.

      ’ var falseObject = new Boolean(false); var result = falseObject && true; alert(result); //true

      var falseValue = false; result = falseValue && true; alert(result); //false ’

  • Number

    • Number 是与数字值对应的引用类型。要创建 Number 对象,可以在调用 Number 构造函数时向其 中传递相应的数值

      'var numberObject = new Number(10); ’

  • String

    • String 类型是字符串的对象包装类型,可以像下面这样使用 String 构造函数来创建。

      ‘var stringObject = new String(“hello world”);’

    • String 对象的方法也可以在所有基本的字符串值中访问到。其中,继承的 valueOf()、toLocale- String()和 toString()方法,都返回对象所表示的基本字符串值。

    • String 类型的每个实例都有一个 length 属性,表示字符串中包含多个字符

  • 单体内置对象

    • “由 ECMAScript实现提供的、不依赖于宿主环境的对象,这些对 象在 ECMAScript程序执行之前就已经存在了

      例如 Object、Array 和 String。 ECMA-262还定义了两个单体内置对象:Global 和 Math。

  • Global对象

    • 没有全 局变量或全局函数;所有在全局作用域中定义的属性和函数,都是 Global 对象的属性

    • URI编码方法

    • Global 对象的 encodeURI()和 encodeURIComponent()方法可以对 URI(Uniform Resource Identifiers,通用资源标识符)进行编码,以便发送给浏览器

    • encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了 %20。而 encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符。

  • eval()方法 (听起来有点六批)

  • eval() 方法就像是一个完整的 ECMAScript解析器,它只接受一个参数,即要执行的 ECMAScript(或 JavaScript) 字符串

    通过 eval()执行的代码被认为是包含该次调用的执行环境的一部分, 因此被执行的代码具有与该执行环境相同的作用域链。这意味着通过 eval()执行的代码可以引用在包 含环境中定义的变量

  • window 对象

    • 在全局作用域中声明的所有变量和函数,就都成为了 window 对象的属性

    • 在没有给函数明确指定 this 值的情况下(无论是通过将函数添加为对象的方法,还是通过调用 call()或 apply()),this 值等于 Global 对象

  • Math对象

    • Math 对象的属性

    属 性 说 明

    Math.E 自然对数的底数,即常量e的值

    Math.LN10 10的自然对数

    Math.LN2 2的自然对数

    Math.LOG2E 以2为底e的对数

    Math.LOG10E 以10为底e的对数

    Math.PI π的值

    Math.SQRT1_2 1/2的平方根(即2的平方根的倒数)

    Math.SQRT2 2的平方根

    • min()和 max()方法

      • ,min()和 max()方法用于确定一组数值中的小值和大值。这两个方法都可以接收任意多 个数值参数

        ’ var max = Math.max(3, 54, 32, 16); alert(max); //54

        var min = Math.min(3, 54, 32, 16); alert(min); //3 ’

    • 舍入方法

      • Math.ceil()执行向上舍入,即它总是将数值向上舍入为接近的整数;

      • Math.floor()执行向下舍入,即它总是将数值向下舍入为接近的整数;

      • Math.round()执行标准舍入,即它总是将数值四舍五入为接近的整数(这也是我们在数学课 上学到的舍入规则)

    • random()方法

      • Math.random()方法返回大于等于 0小于 1的一个随机数

      • 值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

  • 总结

    这一章终于完了,感觉这一章好难,可能是我面向对象没有学好的原因,感觉有点不是很顺畅,那个regexp不是很懂。其他的还能勉勉强强混过去,后面自己再补补吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值