一、数组
数组是JS中的引用类型之一
-
引用类型和值类型的区别:存放的位置
引用类型存放在内存里,堆内存 (引用类型比较的时候比的是地址)
值类型存放在内存里,栈内存 -
数组的定义
(1)字面量、直接量 : var arr = [ ] ;
(2) 构造函数: var arr1 = new Array() ; var arr2 = Array(); -
数组的使用
-
设置数据 :
var arr = [ ‘hh’ ,‘kk’ , ‘ll’] ;
arr[3]=‘ooo’; -
循环数组
for (var i = 0 ; i < arr.length ; i++){
console.log(arr[i]);
} -
数组的长度
数组天生有一个属性: length它表示数组的长度它是可读可写
var arr = [1,2,3,4,5,6,7];
console.log(arr.length);
*数组的长度改变会影响数组
**二维数组:一维数组中的每一位都是数组 这样的数组叫做二维数组
-
-
数组的属性
push() 向数组的尾部添加一项
// 返回值是数组的长度
pop() 从数组的末尾移除一项。 // 只能删一个
// 返回值是移除的一项
shift() 从数组的开头移除一项
// 只能删一个
// 返回值是 移除的项
unshift() 从数组的开头添加一项
// 返回值是 数组的长度
// 注:通常情况下,我们只在数组中存放同一类型的成员cancat() 向数组中拼接新内容
// 返回值是新数组。 不会改变原数组。
reverse() 颠倒顺序
// 返回值是原数组 。 会改变数组
sort() 排序方法, 通常用于数字,参数是函数, 函数中有a b
// 如果返回 a - b 升序排序
// 如果返回 b - a 降序排序
// 如果不传递参数, 则按照首位数字进行排序
slice() 用于截取数组中的一段 .左闭右开
// 第一个参数是开始截取的位置
// 第二个参数是结束截取的位置(不包含改位置的成员)
// 如果参数是负数,则从后面往前截取 (从 - 1 开始)
// 如果不传递第二个参数,则从第一个参数截取到最后
// 如果没有参数,截取全部
splice 用于数组的增、 删、 改
// 第一个参数表示开始操作的位置( 删除的 位置 )
// 第二个参数表示删除的个数
// 之后的每一个参数都表示数组的新成员(如果是数组 不拆) ,从删除的位置插入
// 如果没有第二个参数,则默认从第一个参数截取到末尾.如果只接受一个参数,表示从该位置开始删除后面所有成员
// 返回值是被删除的元素组成的新数组
join 用于将数组转换位字符串
// 该方法用于将数组的成员以固定的字符串拼接
// 参数是拼接符号,默认是逗号 . 返回值是拼接完成的字符串
indexOf 用于搜索数组中的成员的位置
// 参数是成员 该方法用于数组成员的精确查找
// 查找时用的是全等判定
// 返回值是 下标的位置 如果找不到,就是 -1
toString() 与join 默认一样.将数组转换位字符串
注 : 为什么字符串居然能够调用方法,它不是基本数据类型吗?
解 : 字符串这个数据类型,在JS中运行时 ,JS引擎中解析的时候会先把 a 这个"str"值替换为 var s = new String(“str”);
因为真正操作的时候是新生成的对象内部在操作 a所保存的"str"只是作为参数传递了进去 在里面复制了一份 操作的是这个"副本" 最终会销毁这个生成的对象 原字符串并没有发生变化
二、对象
对象是属性的无序集合
// 属性由两部分组成 :属性名 和属性值
// 属性名必须是字符串
1.定义对象
(1)字面量
(2)构造函数
var obj = new Object();
var obj = Object();
2.方括号语法与点语法
- 方括号语法:
- [] 之间是一个JS的执行环境,可以使用变量,表达式
- [] 最终需要的是一个字符串,如果不是字符串,会转为字符串(调用toString方法)
- [] 只要内容是字符串,不论是否符合变量命名规范,都可以成功
- 点语法:
- 点语法,点什么,就是什么
- 点语法,必须符合变量的命名规范
3.删除属性
delete关键字 该关键字只能用来删除对象的属性 而不可以用来删除变量
4. 循环对象 也叫 遍历 ,或 迭代
循环数组用 for 循环*
  循环对象用 for in 循环
三、变量、属性、函数、方法的区别
-
变量和属性 的相同点 都是用来存储数据
// 变量 : 单独声明并赋值 ,使用的时候,直接写变量名 单独存在
// 属性 : 在对象里面的不需要声明 ,使用的时候必须是 对象.属性 -
函数和方法的相同点:实现某种功能 ,做某件事
// 函数是单独声明 并且调用 函数名() 单独存在
// 方法 在对象里面 调用的时候 对象.方法()
四、函数
函数 作用: 复用代码。
1.定义函数的语法
1: 函数声明
function fun(){
// 变量名 语义化
}
// 定义函数的语法 2: 函数表达式
// var 变量 = function(){
// 执行的代码
// }
var fun = function(){
alert(1);
}
// 定义函数的语法 3: 构造函数
var fun = new Function();
//函数从使用方面来说分两部分:1.定义 2.调用
function fun(){
}
//函数想要执行内部的代码必须加圆括号
-
函数的返回值
function sum(a , b){ // 可以使用return 向函数外部返回内容 return a + b ; } var num = sum (11 + 12 ); console.log(num); // 函数发返回值意义就在函数运行结束后,依然能使用函数的运算结果
3.构造函数创建对象
利用函数的方法,重复相同代码,把这个函数称为 构造函数
- 这个函数封装的是对象
- 构造函数 就是 把 对象里面的一些相同的属性和方法 抽象出来 封装到函数里
构造函数的语法格式:
function 构造函数名() {
this.属性 = 值 ;
this.方法 = function(){
}
}
new 构造函数名();
(1) 构造函数名首字母大写
(2) 构造函数不需要return 就可以返回结果
(3) 调用构造函数 必须使用 new
(4) 只要 new Star() 调用函数就创建一个对象
(5) 属性和方法前面 必须加 this
4.函数属性
length属性:表示字符串的长度
charAt()
// 参数是数字 返回值是该数字所指向的下标字符
charCodeAt() 参数是数字 返回值是该数字所指向的下标字符的编码
split() 参数是分隔符 返回值是以该参数作为切割之后的数组
substring 该方法用于截取字符串中的一段
特点: 1.两个参数时,总是从小的截取到大的,2. 当数值为负数时,不会从后往前数
substr() 该方法也用于截取字符串中的一段 第一个参数依旧表示截取的开始位置 第二个参数表示要截取的字符串的长度
slice() 该方法用于截取字符串的一段 第一个参数表示截取的开始位置(包含) 第二个参数表示截取的结束位置(不包含)