2021-08-09

JavaScript的对象
内建对象

宿主对象

自定义对象

数组(Array)
	- 数组也是对象(内建对象)
	- 它和我们普通对象功能类似,也是用来存储一些值的
	- 不同的是普通对象使用字符串作为属性名
		而数组是使用数字来作为索引操作元素
	- 索引:
		从0开始的整数就是索引
	- 数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据
//创建数组对象
var arr=new Array();
console.log(typeof arr);
	向数组中添加元素
	语法:数组[索引] = 值
  arr[0]=12;
  arr[1]=34;
  arr[2]=56;
  arr[4]=67;
  console.log(arr);
    读取数组中的元素
	语法:数组[索引]
		如果读取不存在的索引,不会报错而是返回undefined
 例
 console.log(arr[1]);//12
 console.log(arr[3]);//undefined

获取数组的长度,可以使用length这个属性获取
语法:数组.length
对于连续的数组,使用length可以获取到数组的长度(元素的个数)
对于非连续的数组,使用length汇获取到数组的最大的(索引+1)
尽量不要创建非连续数组

console.log(arr.length);

	修改length
		- 如果修改的length大于原长度,则多出部分会空出来
		- 如果修改的length小于原长度,则多出的部分会被删除

arr.length=10;
console.log(arr);多出部分会空出来
arr.length=2;
console.log(arr);多出的部分会被删除

数组字面量
创建一个数组
var arr=new Array();

使用字面量来创建数组
  var arr1=[];
语法:[]
  console.log(arr1);
使用字面量创建数组时,可以在创建时就指定数组中的元素
  var arr2=[12,34,56,7,8,9,0,3,5];
  console.log(arr2[2]);//56
  console.log(arr2);
使用构造函数创建数组时,也可以同时添加元素,将要添加的元素作为构造函数的参数传递,元素之间使用,隔开
  var arr3=new Array(12,34,56,7,8,9,0,3,5);
  console.log(arr3);
创建数组arr4,这个数组中只有一个元素10
  var arr4=[10];
  console.log(arr4);
创建一个长度为10的数组
  var arr5=new Array(10);
  console.log(arr5);
数组的值可以是任意的数据类型,包含对象的
  var arr6=["hello",123,false,undefined,null];
  console.log(arr6);
数组中可以存放函数
  var arr7=[function(){alert(123);},function(){alert("helloworld");}];
  console.log(arr7[0]);
//arr7[0]();
二维数组
  var arr8=[
		[1,3,4,5],
		[1,4,6,7]
	];
console.log(arr8[1][2]); 

数组的方法
var arr=[“小明”,“小红”,“小橙”];
var arr1=[“小黑”,“小绿”,“小蓝”];
//数组1.concat(数组2)连接两个或更多的数组,并返回结果。
var arr2=arr.concat(arr1);
//把数组的所有元素串联成一个字符串。元素通过指定的分隔符进行分隔
var str=arr.join("~~");
console.log(arr);
console.log(str);
push()
- 该方法可以向数组的末尾添加一个或多个元素,并返回数组的新的长度
- 可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾
- 该方法会将数组新的长度作为返回值返回

var num=arr.push("小白","小黑");
console.log(num);//5
console.log(arr);

pop()
- 该方法可以删除数组的最后一个元素,并将被删除的元素作为返回值返回
var result=arr.pop();
// arr.pop();
console.log(“result=”+result);
console.log(arr)
unshift()
- 向数组开头添加一个或多个元素,并返回新的数组长度
- 向前边插入元素以后,其他元素的索引会依次调整
var num=arr.unshift(“小白”,“小黑”);
console.log(“num=”+num);
console.log(arr);

	shift()
		- 可以删除数组的第一个元素,并将被删除的元素作为返回值返回
arr.shift();
arr.shift();
arr.shift();
arr.shift();
console.log(arr);

数组的遍历
一般我们都是使用for循环去遍历数组,
JS中还为我们提供了一个方法,用来遍历数组
forEach()
- 这个方法只支持IE8以上的浏览器
IE8及以下的浏览器均不支持该方法,所以如果需要兼容IE8,则不要使用forEach
如果考虑到兼容问题还是使用for循环
var arr=[“小明”,“小红”,“小橙”,“小蓝”,“小绿”];
forEach()方法需要一个函数作为参数
- 像这种函数,由我们创建但是不由我们调用的,我们称为回调函数
- 数组中有几个元素函数就会执行几次,每次执行时,浏览器将会遍历到的元素以实参的形式传递进来,我们可以来定义形参读取这些内容
- 浏览器会在回调函数中传递三个参数:
第一个参数,就是当前正在遍历的元素
第二个参数,就是当前正在遍历的元素的索引
第三个参数,就是正在遍历的数组
arr.forEach(function(value,index,obj){
// console.log(value);
console.log(index);
// console.log(obj);

});

call()与apply()
- 这两个方法都是函数对象的方法,需要通过函数对象来调用
- 当对函数调用call()和apply()都会去调用函数执行
- 在调用call()与apply()可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行时的this
- call()方法可以将实参在对象之后依次传递
- apply() 方法需要将实参封装到一个数组中统一传递
this的总结:
1.以函数的形式调用时,this始终都是window对象
2.以方法的形式调用时,this就是调用方法的对象
3.以构造方法的形式调用时,this是新创建的那个对象
4.使用call与apply调用时,this是指定的那个对象

function fun(){

// console.log(“这是一个函数”);
console.log(this);
}
// fun();
// fun.call();
// fun.apply();
var obj={
name:“xiaoming”,
age:23
};
// fun.call(obj);
// fun.apply(obj);

function fun1(a,b){
	console.log("a="+a+",b="+b);
	console.log(this);
}
fun1(12,34);
fun1.call(obj,12,34);
fun1.apply(obj,[12,34]);

JavaScript_arguments

在调用函数时,浏览器每次都会传递进来两个隐含的参数:
	1.函数的上下文对象 this
	2.封装实参的对象arguments
		- arguments是一个类数组对象,它也可以通过索引来操作数组,也可以获取长度
		- 在调用函数时,我们所传递的实参都会在arguments中保存
		- arguments.length可以用来获取实参的长度
		- 我们即使不定义形参,也可以通过arguments来使用实参,比较麻烦
			arguments[0] 表示第一个实参
			arguments[1] 表示第二个实参
		- 它里面有一个属性叫做callee,
			这个属性对应一个函数对象,就是当前正在执行的函数对象

function fun(){

// console.log(this);
console.log(arguments instanceof Array);
// console.log(arguments[0]);
console.log(arguments.callee);
}
fun(12,123,343,45,4);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值