JavaScript源码笔记(六)【爱创课堂专业前端培训】

JavaScript源码笔记(第六天)—前端培训机构

 

一、 JS中的对象

JS对象有三种:内置对象、宿主对象、自定义对象

JS中,除了undefined之外,所有的东西都可以看做是对象

今天主要介绍三种内置对象,在js中这三个内置对象都已经内定了自己的属性和方法供开发者使用。

String字符串对象、Array数组对象、RegExp正则 表达式对象

 

二、 数组Array对象

数组是由中括号包裹的各种数据类型的一系列数据,如:[10,”Hello”,10,25,true,function(){}]

前面讲过,变量可以看做是存储数据的容器,存储的是一条数据;那么数组,也可以看做是存储数据的容器,只不过存储的是多条数据;可以把数组看做是一个大盒子,里面装了很多小盒子

2.1 数组Array对象的创建方式

² 字面量的方式  

var arr = [10,”Hello”,10,25,true,function(){}];

² 使用new关键字

var arr = new Array(10);


 //字面量的方式并存入各种不同数据类型的数据
var arr = [10,"Hello",true,function () { },null,undefined,Infinity,NaN,new Date(),{name:"zhangsan",age:23}];
console.log("arr:",arr);

//字面量创建一个空数组
var arr2 = [];
console.log("arr2:",arr2);

//使用new关键字
//创建一个长度为10的空数组
var array = new Array(10);
console.log("array:",array);

//创建一个带有两个元素的数组
var array2 = new Array(10,20);
console.log("array2:",array2);

//创建一个数组存储一个字符串数据
var array3 = new Array("Hello");
console.log("array3:",array3);

//创建一个数组存储一个布尔数据
var array4 = new Array(true);
console.log("array4:",array4);

运行结果:

1 arr: (10) [10, "Hello", true, ƒ, null, undefined, Infinity, NaN, Thu Jul 11 2019 09:48:04 GMT+0800 (中国标准时间), {…}]

2 arr2: []

3 array: (10) [empty × 10]

4 array2: (2) [10, 20]

5 26 array3: ["Hello"]

6 30 array4: [true]

 

 

2.2 数组中元素的获取与赋值

数组具有索引,索引从0开始,依次递增;可以通过中括号加索引的方式获取数组中对应索引的元素。

比方:var arr = [10,20,30,40]  

想要获取第一个元素10,使用 arr[0]

想要获取最后一个元素40,使用 arr[arr.length-1] 即arr[3]

//声明一个空数组
var arr = [];
console.log("arr添加元素前:",arr);
//向数组中添加元素
arr[0] = 10;
arr[1] = 10.24;
arr[2] = "Hello";
arr[10] = true;
//打印添加元素后的数组
console.log("arr添加元素后:",arr);

//验证数据类型
console.log("检测数据类型:",typeof arr);

//获取数组中的元素
console.log("数组中的第一个元素:",arr[0]);
console.log("数组中的第五个元素:",arr[4]);
console.log("数组中的最后一个元素:",arr[arr.length-1]);

执行结果:

1 arr添加元素前: []

2 arr添加元素后: (11) [10, 10.24, "Hello", empty × 7, true]

3 检测数据类型: object

4 数组中的第一个元素: 10

5 数组中的第五个元素: undefined

6 数组中的最后一个元素: true

 

2.3 数组对象的属性

constructor  返回对象的构造函数

length  返回数组中元素的个数

prototype 可以用自定义属性和方法供数组对象使用

 

var arr = [10,20,30,40,50,60];
//length:获取数组中元素的个数
var eleCounts = arr.length;
console.log("数组中元素的个数",eleCounts,"数据类型:",typeof eleCounts);//数组中元素的个数 6 数据类型: number

//constructor:返回数组对象的构造函数
console.log("数组对象的构造函数为:",arr.constructor);//数组对象的构造函数为: ƒ Array() { [native code] }

// var arr = new Array();

//prototype 可以用自定义属性和方法供数组对象使用
Array.prototype.print = "数组";

console.log("数组对象调用自定义属性print结果:",arr.print);//数组对象调用自定义属性print结果: 数组

 

2.4 数组对象的方法

concat(items) 拼接一个或多个数组

参数列表items:可以是一个或多个数组,也可以是任何类型的元素

返回值:返回一个新的数组

不会改变原数组

toString()  数组转换成字符串,数组元素之间默认使用逗号分隔

返回值:字符串

join(seperator) 通过制定分隔符将数组转换成字符串,默认分隔符为逗号

参数separator: 字符串类型的分隔符

返回值:字符串

var arr = ["猕猴头","榴莲"];
var conArr1 = ["樱桃","蓝莓"];
var conArr2 = ["杨桃","桑葚"];

console.log("拼接前原字符串长度:",arr.length);//拼接前原字符串长度: 2

//数组拼接方法 concat()
var newArr = arr.concat(conArr1,conArr2,"西瓜","葡萄");

console.log("拼接后原字符串长度:",arr.length);//拼接后原字符串长度: 2

console.log("newArr:",newArr);//newArr: (8) ["猕猴头", "榴莲", "樱桃", "蓝莓", "杨桃", "桑葚", "西瓜", "葡萄"]


//数组转字符串方法一 toString()
var str = arr.toString();
console.log("str",str,"数据类型:",typeof str);//str 猕猴头,榴莲 数据类型: string

//数组转字符串方法二 join()
var str2 = newArr.join();
console.log("str2:",str2,"数据类型:",typeof str2);//str2: 猕猴头,榴莲,樱桃,蓝莓,杨桃,桑葚,西瓜,葡萄 数据类型: string
var str3 = newArr.join(" ");
console.log("str3:",str3,"数据类型:",typeof str3);//str3: 猕猴头 榴莲 樱桃 蓝莓 杨桃 桑葚 西瓜 葡萄 数据类型: string
var str4 = newArr.join("\t");
console.log("str4:",str4,"数据类型:",typeof str4);//str4: 猕猴头  榴莲 樱桃 蓝莓 杨桃 桑葚 西瓜 葡萄 数据类型: string
var str5 = newArr.join("&");
console.log("str5:",str5,"数据类型:",typeof str5);//str5: 猕猴头&榴莲&樱桃&蓝莓&杨桃&桑葚&西瓜&葡萄 数据类型: string

 

 

slice(startIndex,endIndex) 截取制定索引之间的元素,左闭右开

参数:startIndex 必须,起始索引

  endIndex  可选,结束索引;如果不加这个参数,默认从起始索引截取到最后

返回值:返回一个新的数组

indexOf(searchElement,startIndex) 从指定索引开始查找某个元素

lastIndexOf(searchElement,startIndex) 从指定索引开始反向查找某个元素

参数:searchElement 必须,要从数组中查找的元素

  startIndex 可选,指定从某个索引处开始正向或反向查找元素

返回值:查找的元素在数组中对应的索引,如果找不到这个元素,返回 -1

var arr = ["猕猴头", "榴莲", "樱桃", "蓝莓", "杨桃", "桑葚", "西瓜", "葡萄"];

 console.log("截取前原数组arr:",arr);//截取前原数组arr: (8) ["猕猴头", "榴莲", "樱桃", "蓝莓", "杨桃", "桑葚", "西瓜", "葡萄"]

 //slice()截取数组中部分元素 左闭右开
var newArr = arr.slice(2,4);
console.log("newArr:",newArr,"数据类型:",typeof newArr);//newArr: (2) ["樱桃", "蓝莓"]0: "樱桃"1: "蓝莓"length: 2__proto__: Array(0) 数据类型: object

 console.log("截取后原数组arr:",arr);//截取后原数组arr: (8) ["猕猴头", "榴莲", "樱桃", "蓝莓", "杨桃", "桑葚", "西瓜", "葡萄"]

 var newArr2 = arr.slice(5);
 console.log("newArr2:",newArr2);//newArr2: (3) ["桑葚", "西瓜", "葡萄"]

 //索引相关的方法indexOf()  lastIndexOf()
 var index = arr.indexOf("桑葚");
 console.log("index:",index,"数据类型:",typeof index);//index: 5 数据类型: number
 var index2 = arr.indexOf("桑葚",6);
 console.log("index2:",index2,"数据类型:",typeof index2);//index2: -1 数据类型: number
 //注:返回-1代表没有找到这个元素

 var lastIndex = arr.lastIndexOf("桑葚");
 console.log("lastIndex:",lastIndex,"数据类型:",typeof lastIndex);//lastIndex: 5 数据类型: number
 var lastIndex2 = arr.lastIndexOf("桑葚",4);
 console.log("lastIndex2:",lastIndex2,"数据类型:",typeof lastIndex2);//lastIndex2: -1 数据类型: number

你可能感兴趣的:(JavaScript源码笔记(六)【爱创课堂专业前端培训】)