引用类型

2018-03-21  本文已影响0人  AlexTamir

引用类型的值(对象)是引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但这种称呼并不太妥当。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。


一. Object类型

  1. 创建Object实例的两种方法
    • 第一种是使用new操作符后跟Object构造函数
    var person  = new Object();
    person.name = 'Nicholas';
    person.age = 29;
    
    • 第二种就是使用对象字面量表示法
    var person = {
        name: 'Nicholas',
        age: 29,
    };
    
  2. 访问对象属性时使用的都是点表示法,也可以使用方括号表示法来访问对象的属性。
    • 使用方括号语法时,应该讲要访问的属性以字符串的形式放在方括号中alert(person["name"]);
    • 方括号语法的主要优点是可以通过变量来访问变量
    var propertyName = 'name';
    alert(person[propertyName]);
    

二. Array类型

  1. 创建数组的基本方式有两种
    • 第一种是使用Array构造函数
    var colors = new Array();
    var colors = new Array(20);// 创建一个length值为20的数组
    var colors = new Array('red', 'blue', 'green');// 创建一个包含3个字符串的数组
    
    • 第二种基本方式是使用数组字面量表示法
    var colors = ['red', 'blue', 'green'];// 创建一个包含3个字符串的数组
    var names = [];// 创建一个空数组
    
  2. 一个数组如果设置某个值的索引超过了数组现有项数,数组就会自动增加到该索引值加1的长度。
var colors = ['red', 'blue', 'green'];// 定义一个字符串数组 
alert(colors[0]);// 显示第一项
colors[2] = 'black';// 修改第三项
colors[3] = 'brown';// 新增第四项
  1. 数组的length可读可写,通过设置length,可以将数组的末尾移除项或向数组中添加新项
var colors = ['red', 'blue', 'green'];// length为3
colors.length = 2;
alert(colors[3]);// undefined
  1. 检测数组使用Array.isArray()方法
    用法:if (Array.isArray(value)) { // 对数组执行操作 }
  2. 栈方法
  1. 队列方法
  1. 重排序方法
  1. 操作方法
  1. 位置方法
  1. 迭代方法
  1. 归并方法
var values = [1, 2, 3, 4, 5];
var sum1 = values.reduce(function (prev, cur, index, array) {
  return prev + cur;
});
var sum2 = values.reduceRight(function (prev, cur, index, array) {
  return prev + cur;
});
alert(sum1);// 15
alert(sum2);// 15

三. Date类型

  1. 要创建一个日期对象,使用new操作符和Date构造函数即可let now = new Date();。在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。

四. RegExp类型

  1. 正则表达式的匹配模式支持的3个标志
  1. 创建正则表达式

五. Function类型

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

  1. 函数通常是使用函数声明语法定义的
function sum (num1, num2) {
    return num1 + num2;
}
var sum = function (num1, num2) {
    return num1 + num2;
}
// 两种都可以 
  1. 函数名仅仅是指向函数的指针,所以一个函数可能有多个名字
  2. 没有重载(深入理解)
function addSomeNumber (num) {
    return num + 100;
}
function addSomeNumber (num) {
    return num + 200;
}
let result = addSomeNumber(100);// 300

虽然声明了两个同名函数,结果是后面的函数覆盖了前面的函数。所以说js不存在重载。

  1. 作为值的函数
function callSomeFunction(someFunction, someArgument) {
  return someFunction(someArgument);
}

function add10(num) {
  return num + 10;
}

// 要访问函数的指针而不执行函数的话,必须去掉函数名后面的那对圆括号
var result = callSomeFunction(add10, 10);
console.log(result);// 20
  1. 函数内部属性
上一篇下一篇

猜你喜欢

热点阅读