js中关于数组,对象,函数的基础知识
数组
数组:将多个元素按照一定顺序排放到一个集合中
数组字面量:[]
获取数组元素:通过index获取某一项值之后,使用或者更改数组项的值。
更改数据:通过赋值实现
数组长度:length属性,记录数据的总长度(数组的长度可以改变)
使用方法:变量名.length
数组的长度与数组最后一项的下标存在关系,最后一项的下标等于数组的length-1.
增加数组长度:直接给数组length属性赋一个大于原来长度的值。或者给一个大于下标的项直接赋值,也可以强制拉长数组。
缩短数组长度:强制给length属性赋值,后面数据被直接删除。删除不可逆。
数组遍历:
函数
函数的作用:封装一段代码,将来可以重复使用。
函数声明:函数定义
function 函数名(参数) {
封装的结构体;
}
函数调用方法:函数名();
参数
函数的参数1:一个函数可以设置0个或者多个参数,参数之间用逗号分隔。
接口:就是函数的参数,函数参数的本质就是变量,可以接收任意类型的数据,导致函数执行结果根据参数的不同,结果也不同.
一个函数可以设置0个或多个参数。
例如:
function sum(a,b){
console.log(a+b);
}
sum(3,4);
函数的参数2:
形式参数:定义的()内部参数叫做形式参数,本质是变量,可以接收实际参数传递过来的数据。
实际参数:调用的()内部的参数,本质就是传递的各种类型的数据,传递给每个形参,
函数的返回值:将函数执行结果返回一个值。
利用return关键字设置函数返回值。
作用1:函数内部如果结构体执行到一个return的关键字,会停止后面代码的执行。
作用2:可以在return关键字后面添加空格,空格后面任意定义一个数据字面量或者表达式,函数在执行完自身功能之后,整体会被return矮化成一个表达式,表达式必须求出一个值继续可以参与程序,表达式的值就是return后面的数据。
函数表达式:
定义方法:将函数的定义,匿名函数赋值给一个变量。
匿名函数:函数没有函数名。
调用函数表达式:给变量名即()执行,不能使用函数名加()执行。
var a=function(){
console.log(1);
};
函数的数据类型:
函数是一种单独的数据类型Function.
函数可以参与其他程序,如将函数作为另一个函数的参数在另一个函数中调用,或者可以吧函数作为返回值从函数内部返回。
arguments对象
arguments是伪数组。
函数递归
函数内部可以通过函数名调用函数自身的方式就是函数递归。
递归次数过多容易出现错误。
函数的作用域
作用域:变量可以起作用的范围。
任何一对花括号中的结构体都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,称之为块级作用域
作用域链
作用域链:函数内指向函数外的连式结构
预解析
预解析过程:
1.把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
2.把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
3.先提升var再提升function.
(变量先进行)
IIFE自调用函数
调用方式:函数名或者函数表达式的变量名后面加()运算符。(一次性函数)
对象
对象的基本概念
js中对象是无序属性的集合,其属性可以包括基本值,对象或者函数。对象就是一组没有顺序的值。 对象的行为与特征:
行为:在对象中用属性表示
行为:在对象中用方法表示
对象字面量
对象字面量语法{}
每条数据都是有数据名和属性值组成,键值对写法: k:v
对象数据的调用和更改
调用方法:
1.用对象的变量名打点调用某个属性名得到属性值。
2.在对象内部用this打点调用属性名。this替代对象。
3.用对象的变量名后面加[]调用,[]内部是字符串格式的属性名。
调用方法时,需要在方法名后加()执行。
new Object()创建对象
Object()构造函数,是一种特殊的函数。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,终于new运算符一起使用在创建对象的语句中。
1.构造函数用于创建一类对象,首字母要大写。
2.构造函数要和new一起使用才有意义。
new在执行过程中做的四件事
1.new会在内存中创建一个新的空对象。
2.new会让this指向这个新对象
3.执行构造函数 目的:给这个新对象加属性和方法。
4.new会返回这个对象
工厂函数方法创建对象
即对new Object()方法进行封装
自定义构造函数方法
自定义一个创建对象的构造函数,函数内部不需要new一个构造函数的过程,直接使用this代替对象进行属性和方法的书写,也不需要return一个返回值。
注意:构造函数的函数名首字母大写。
对象遍历
简单的遍历循环:输出每一项的属性名和属性值
内部会定义一个k变量,k变量在每次循环时会从第一个开始接受属性名一直接收到最后一条属性名,执行完后跳出循环
for(var k in obj){
console.log(k+"项的属性值是"+obj[k]);
}
内置对象
常见Math内置对象
数据方法
toString() 把数组转换成字符串
首尾操作 push() 在数组末尾添加一个或者多个元素,并且返回数组操作后的长度
pop() 删除数组最后一项,返回删除项
shift() 删除数组第一项,返回删除项
unshift() 在数组开头添加一个或者多个元素,并且返回数组的新长度。
合并与拆分
合并:
concat()
将两个数组合并成一个新的数组,原数组不受影响,参数位置可以是一个数组字面量,数组变量,零散的值。
var arr=[1,2,3];
var arr1=[8,9,10];
var arr2=arr.concat(arr1);
拆分
slice(start,end)
从当前数组中截取一个新的数组,不影响原来的数组,返回一个新的数组,包含从start到end(不包括该元素)的元素。
参数区分正负,正值表示下标位置,负值表示从后面往前数的第几个位置,参数可以只传递一个,表示从开始位置截取到字符串结尾、
数组常用方法
删除,插入,替换
splice(index,howmany,element1,....) 用于插入,删除,或者替换数组元素
index:删除元素的开始位置
howmany:删除元素的个数,可以是0
element1,element2:要替换的新数据。
位置方法: indexOf() 查找数据在数组中最先出现的下标
lastindexOf()查找数据在数组中最后一次出现的下标。
如果没有找到,返回-1
倒叙:reverse() 将数组完全颠倒,第一项变成最后一项,最后一项变成第一项。
排序:sort() 默认根据字符编码顺序,从小到大排序。
如果想要根据数值大小排序,则需要添加比较函数参数。
var arr=[1,2,3];
arr.sort(function(a,b){
if(){
return -1;//a在b前面
}else if(){
return 1;
}
else{
return 0;
}
})
join() 通过参数作为连字符家将数组中的每一项用连字符连成一个完整的字符串。
清空数组方法:
arr=[];
arr.length=0;
arr.splice(0,arr.length);
基本包装类型
String基本类型没有方法,当调用str.substring()等方法时,先把str包装成String类型的临时对象,再调用substring方法,最后销毁对象。
字符串的特点及方法
字符串是不可变的。
字符串属性:
长度属性:str.length
chatAt() 方法可以返回指定位置的字符
indexOf() 方法可以返回摸个指定的字符串值在字符串首次出现位置的下标。
concat() 连接两个或者多个字符串
split() 把一个字符串分割成字符串数组。
toLowerCase() 把字符串转换为小写。
toUpperCase() 把字符串转换为大写
slice() 提取字符串的某个部分
语法:slice(start,end);
从开始位置截取到结束位置(不包括结束位置)的字符串
区分正负,正值表示下标位置,负值表示从后往前面数第几个位置。参数可以只有一个,表示从开始截取到字符串结尾。
substr() 在字符串中抽取start下标开始指定数目的字符
substring( ) 和slice()类似,不过不满意负值,并且不限制大小,会自动将小的值当开始。