欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript第五章

程序员文章站 2022-07-12 17:50:42
...

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不是很懂。其他的还能勉勉强强混过去,后面自己再补补吧!!!