JavaScript高级程序设计----读书笔记,第五章

版权声明:随意转载 https://blog.csdn.net/bigcupwater/article/details/78803403
  1. 引用类型的值(对象)是引用类型的一个实例,在 ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起,常被称作类。但是它不具备传统面向对象语言所支持的类和接口等基本结构,所以并不是相同的概念。
  2. Object 类型
    • 创建 Object 类型实例的方式有两种:
      • 用 new var person = new Object();
      • 用对象字面量 var person = { 属性:属性值 } (用得较多)
    • 访问对象属性的方式也有两种:
      • 点表示法,person.name(用得较多)
      • 方括号表示法,person["name"]
  3. Array 类型

    • JavaScript 中的数组每一项可以保存任意类型的数据,第一个位置保存数值,第二个保存字符串;并且数组的大小是可以动态调整的,可以随着数据的添加自动增长以容纳新数据。
    • 创建方式:var arr = new Array(数组长度);或者 var arr = [1,2,3,...]
    • length,数组的长度(多少项)保存在 length 属性中,通过设置这个属性值可以从数组的末尾移除旧项或者添加新项。
    • 检测数组Array.isArray(数组);检测是否是数组。
    • 转换方法toString()、valueof()、toLocaleString(),转换为每个项的字符串表示。toLocaleString()取每一项的值调用的是每一项的 toLocaleString() 方法,而不是toString()方法。
    • 栈,数组可以表现得像栈一样,先进后出。JavaScript提供了 push() 和 pop() 方法去实现类似栈的行为。
    • 队列,数组可以表现得像队列一样,先进先出。push() 和 shift() 去实现类似队列的行为。
    • 重排序方法:reversse() 反转数组,sort() 排序 。sort() 调用每个数组项的 toString() 方法,然后比较字符串,所以通常情况下数字比较大小结果不对,因此 sort() 可以接受一个比较函数作为参数,决定值的顺序。

      function compare(value1, value2) {
          if (value1 < value2) {
              return -1;
          } else if (value1 > value2) {
              return 1;
          } else {
              return 0
          }
      }
      
      var values = [0,1,5,10,15];
      values.sort(compare);
      alter(values); // 0,1,5,10,15
      
    • 其他各种重要方法,查书吧!
  4. Date 类型
    • 创建 var now = new Date();,若不传入参数,自动获得当前日期和时间。如果想根据特定日期和时间创建日期对象,必须传入指定日期的毫秒数,JavaScript提供了两种方法取得这一数值 Date.parse() 和 Date.UTC()(具体使用请看书)。
    • 日期格式化方法,日期时间组件方法,查书查书。
  5. RegExp 类型
    • JavaScript 通过 RegExp 类型来支持正则表达式,不懂正则暂时不看。
  6. Function 类型(函数实际上是对象,每个函数都是 Function 类型的实例)

    • 因为函数是对象,所以是一个变量,如果函数允许重载,那么就定义了两个名称相同的变量第二个就会覆盖第一个变量(函数)。所以 JavaScript 没有函数重载。
    • 在函数内部有两个特殊的对象:arguments(类数组对象,包含着传入函数中的所有参数。该对象拥有 callee 指针属性指向 arguments 对象的函数) 和 this (行为同 Java 中的 this).
    • 函数的属性和方法

      • 属性:length 参数的个数长度;prototype,对于 JavaScript 中的引用类型而言,该属性是保存他们实例方法的真正所在。
      • 方法:apply()、call(),在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值。两个函数都需要传入两个参数,第一个参数是在其中运行函数的作用域,另一个是参数数组。二者第二个参数传入方式不同,apply()是参数数组或arguments,call()则必须明确地传入每一个参数。
        function sum(num1, num2) {
            return num1 + num2;
        }
        
        function callSum1(num1, num2) {
            return sum.apply(this, arguments);
        }       
        
        function callSum2(num1, num2) {
            return sum.call(this, num1, num2);
        }
        
        alert(callSum1(10, 10));
        alert(callSum2(10, 10));
  7. 基本包装类型(Boolean、Number、String)
    • 每当读取一个基本类型数值的时候,后台就会创建一个对应的基本包装类型的对象,从而我们能后调用一些方法来操作这些数据。
    • 引用类型与基本包装类型的主要区别就是对象的生存期,使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。
    • Object 构造函数也会像工厂方法一样,根据传入值的类型返回相应基本包装类型的实例。
  8. 单体内置对象
    • 定义。由 ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在 ECMAScript 程序执行之前就已经存在了。如 Object、Array、String以及Global、Math。
    • Global,不属于任何其他对象的属性和方法,都是它的属性和方法。全局变量和函数就是它的属性和函数。
    • Math,JavaScript 中提供数学计算相关方法的对象。

猜你喜欢

转载自blog.csdn.net/bigcupwater/article/details/78803403