版权声明:随意转载 https://blog.csdn.net/bigcupwater/article/details/78803403
- 引用类型的值(对象)是引用类型的一个实例,在 ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起,常被称作类。但是它不具备传统面向对象语言所支持的类和接口等基本结构,所以并不是相同的概念。
- Object 类型
- 创建 Object 类型实例的方式有两种:
- 用 new
var person = new Object();
- 用对象字面量
var person = { 属性:属性值 }
(用得较多)
- 用 new
- 访问对象属性的方式也有两种:
- 点表示法,
person.name
(用得较多) - 方括号表示法,
person["name"]
- 点表示法,
- 创建 Object 类型实例的方式有两种:
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
- 其他各种重要方法,查书吧!
- Date 类型
- 创建
var now = new Date();
,若不传入参数,自动获得当前日期和时间。如果想根据特定日期和时间创建日期对象,必须传入指定日期的毫秒数,JavaScript提供了两种方法取得这一数值 Date.parse() 和 Date.UTC()(具体使用请看书)。 - 日期格式化方法,日期时间组件方法,查书查书。
- 创建
- RegExp 类型
- JavaScript 通过 RegExp 类型来支持正则表达式,不懂正则暂时不看。
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));
- 基本包装类型(Boolean、Number、String)
- 每当读取一个基本类型数值的时候,后台就会创建一个对应的基本包装类型的对象,从而我们能后调用一些方法来操作这些数据。
- 引用类型与基本包装类型的主要区别就是对象的生存期,使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。
- Object 构造函数也会像工厂方法一样,根据传入值的类型返回相应基本包装类型的实例。
- 单体内置对象
- 定义。由 ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在 ECMAScript 程序执行之前就已经存在了。如 Object、Array、String以及Global、Math。
- Global,不属于任何其他对象的属性和方法,都是它的属性和方法。全局变量和函数就是它的属性和函数。
- Math,JavaScript 中提供数学计算相关方法的对象。