WEB-JS-day07

day07

回顾:

匿名函数: 一个函数没有名字
function(){}

用于:
1.  匿名函数创建函数--函数表达式
	var fn=function(){};
	此时的变量名 就是函数名了.
	函数表达式不存在函数的提升,最多存在变量声明的提升.
2. 匿名函数的自调用, 
	作用:创建一个作用域,防止污染全局(这样里面的变量和函数可以随便写,不会对其他造成影响)
	写法:
		(function(){ 函数体})()


3. 匿名函数作为 回调函数来使用
	fn(function(){ 函数体})()
	回调函数,可以传递多行语句

4. 全局函数:
	可以在任何函数使用
	parseInt /parseFloat/encodeURI/decodeURI
	判断一个值是否为NaN
	isNaN()
	判断一个值是否为有限值
	isFinite()
	执行字符串内部的计算, 常用与页面数据的处理
	eval()

对象: 属性和方法

对象中分为三类:
	内置对象
	宿主对象
	自定义对象

创建对象的3这种形式

对象字面量/对象直接量
{name:'tom'}

内置构造函数
new Object()

自定义构造函数(后面讲)

访问对象的属性 2种

	对象.属性名
	对象['对象名']
	
例如: console.log()
	  num.toString()
	  'a'.charCodeAt()

遍历属性 for-in

for(var key in 对象){
	对象[key]
}

添加成员方法

对象中的方法
// 写在对象中的方法, 这样写
{
	say:function(){ 
	this.name
 }
}

一般方法
var say=function(){}

1. 判断对象是否含有某个属性

(1) 对象.属性名=== undefined  存在-->返回false ,不存在--->false
(2) 对象.hasOwnProperty('属性名') 存在-->true,不存在 -->false
(3) 使用 in 关键字来判断   '属性名' in 对象   存在 -->true  不存在--->false


var person={
	name:'tom',
	age: 20

	}

//检测对象中是否含有某个属性

console.log(person.name===undefined);
// js自己提供的方法
console.log(person.hasOwnProperty('score'));
// 使用 in

console.log('name' in person);

数组:

有多个元素组成的集合, 每个元素就是一个数据.

创建数据组

(1)数组字面量创建

		var num=[元素1,元素2,元素3...];

	//创建一个空数组
	    var emp=[];
	    console.log(emp);
	    */
	    var emp=['tom','kate','king',12,true,null,undefined];
	    console.log(emp);

	注: 数组中可以放任意类型的元素,但是,一般我们都是放入同一种类型的元素.
	
	(1-2) 数组的访问
		下标从0 开始,如果下标越界, 返回值是 undefined
		console.log(emp[1]); //'kate'

	(1-3) 修改元素
		emp[4]='jerry';

	(1-4) 添加下变为5 的元素
		emp[6]='sir'

练习,创建数组,包含若干个城市名称,修改某个元素,添加某个元素,最后打印结果

var city=['长沙','武汉','洱海','布达拉宫'];
city[2]='北京';
city[4]='南京';
console.log(city);

(2) 内置构造函数创建数组

			new Array(元素1, 元素2,...)
			new Array(3); 初始化数组的长度为3,可以添加更多的元素

		//通过构造创建空数组
		var course=new Array();
		
		var course=new Array('mysql','javascript','nodejs');
		console.log(course);
		
		var course2=new Array(3);
		course2[0]='html';
		course2[1]='ajax';
		course2[2]='css';
		course2[3]='bootstrap'
		console.log(course2);

(3) 查看数组的长度

数组.length  返回数组中的个数,
可以使用它在数组的末尾添加新元素
	数组[数组.length]=值;

练习: 创建一个空数组,使用数组的长度添加多个国家的名称.

	var country=[];
	country[country.length]='中国';
	country[country.length]='美国';
	country[country.length]='英国';
	console.log(country);

数组的分类

补: 数组也是对象

数组的下标能用字符串吗?

数组分为 : 索引数组   关联数组
索引数组: 以0 开始的整数作为下标
关联数组: 以字符串作为下边

关联数组

关联数组中的元素, 只能单独添加, 一般很少用, 因为这种形式会被对象代替
// 关联数组
var person=[];
person['name']='tom';
person['age']=18;
person['sex']='男'
console.log(person);


练习: 创建一个关联数组, 包含图书的编号,标题,作者,价格

	var books=[];
	books['id']=1002;
	books['title']='玉女三千';
	books['author']='张武店';
	books['price']=558;
	console.log(books);

遍历数组中的元素

(1) 通过 for- in 来遍历索引数组和关系数组.
(2) 只能使用for循环来遍历索引数组, 关联数组不行

注: 一般 索引数组,使用for 循环就可以了
	关联索引 使用for -in来遍历.

    var books=[];
    books['id']=1002;
    books['title']='玉女三千';
    books['author']='张武店';
    books['price']=558;
    console.log(books);
    
    for (var key in books ){
    console.log(key);
    console.log(books[key]);
    
    }

    //练习: 创建函数,传递一个参数(一组工资),返回平均工资
    
    
    function getAvg(salary){
    	
    	for (var i=0,sum=0;imax){
    			max=salary[i];
    		}
    	}
    
    	return max;
    }
    
    var salary=[99,56,456,233,78,45];
    console.log(getMax(salary));

数组给我们提供了一些方法(api)

将数组转为字符串
	toString()
	将数组中的元素按照逗号分隔转为字符串
	join('-')
	将数组中的元素按指定的字符分隔转为字符串

将两个数组合并到一起
	concat(arr2,arr3)
	拼接多个数组

截取数组中的元素
	slice(start,end)
	截取数组中的元素, start 是开始的下标,end 是结尾的下标
	含头不含尾, 如果是负数, 表示是倒数

删除数组中的元素 (删除, 插入, 替换)
	aplice(start,count,value1,value2...)
	删除数组中的元素,start开始的下标,count删除的长度(个数),
	value 删除后添加的元素,如果 count 为空删除到最后; start为负数表示倒数.


翻转数组中的元素
	reverse()
	翻转数组中的元素

对数组中的数据排序
	sort() 默认升序
	如果是字符串: 默认的是Unicode码来排序
			
	对数字排序
	sort(function(a,b){
		return a-b;// 从小到大
		return b-a;//从大到小
	})


在数组的末尾操作数据
	数组.push("数据"); 返回数组的长度
	删除
	数组.pop(); 把最后一个拿出来, 返回删除的元素.

在数组的头部操作数据	
	数组.unshift('数据') ;在开头添加数据, 返回数组的长度.
	删除第一个
	数组.shift()  删除头部,返回被删除的数据


	
学习 api 注意事项
1.作用 , 2.需要多少参数,3.返回值

    //将数组转为字符串
    var arr=['tom','jerry','king'];
    // toString() 默认按照逗号组成字符串
    var str=arr.toString();
    // 按照指定的符号组成字符串
    var str2=arr.join('-');
    console.log(str2,typeof str2);
    
    // 拼接多个数组
    
    var arr1=['html','css'];
    var arr2=['js','nodejs','ajax'];
    var arr3=['vue','react'];
    
    console.log(arr1.concat(arr2,arr3));
    
    // 截取数组中的元素
    
    var arr=['html','css','js','nodejs','ajax'];
    console.log(arr.slice(2));
    console.log(arr.slice(2,4));
    console.log(arr.slice(-1));
    
    // 练习: 创建数组a-g, 每个字母是一个元素,
    // 分别截取 cd,f,b, 组成一个新数组
    */
    var s=['a','b','c','d','e','f','g'];
    var s1=s.slice(2,4);
    var s2=s.slice(6,7);
    var s3=s.slice(-6,-5);
    console.log(s1);
    console.log(s1.concat(s2,s3));
    
    // 删除, 插入, 替换
    
    var arr=['html','css','js','nodejs','ajax'];
    var t=arr.splice(2,2);
    
    console.log(arr.splice(1,2,'东吴','html5'))
    console.log(arr.splice(3,0,'bootstrap'));
    console.log(t)
    console.log(arr);

	//练习: 创建数组a-h,每个字母是一个元素
	// 删除 d,e 替换f为m,在下标为2的位置添加字母z
	
	var s=['a','b','c','d','e','f','g','h'];

	s.splice(3,2);//abcfgh
	s.splice(-3,1,'m');
	s.splice(2,0,'z');
	console.log(s);

你可能感兴趣的:(web,js)