第4天(就业班) 循环语句、函数、String、Number、自定义对象、prototype原型

时间:2022-08-25 15:20:56
1.	循环语句
1.1while循环

	格式: 
	while(判断的条件){ 
	循环体内容 
	} 
需求:计算1~100的总和
var num = 1;
	var result = 0;
	while(num<=100){
		result +=num;	
		num++;
	}
	document.write("结果:"+result);
1.2	do while循环
格式:
do{ 
	循环语句; 
	}while(判断条件); 
需求;计算1~100奇数的总和。
	var num = 1;
	var result = 0;
	do{
		if(num%2!=0){
			result +=num;
		}
		num++;
	}while(num<=100);
	document.write("结果:"+result);
1.3 for循环
格式:
  			for(初始化语句; 判断的条件 ; 循环后的语句){
  				循环体语句;	
  			}
计算1~100偶数的总和
	var result = 0 ; 	
  		for(var i =  1 ; i<=100 ; i++){
  			if(i%2==0){
  				result +=i;
  			}
  		}	
  		document.write("结果:"+result);
1.4 for in函数

/*
for-in语句:

	for-in语句的格式:
		
		for(var 变量名 in 遍历的目标){
			
		}

for-in语句的作用:
	1. 可以用于遍历数组的元素。  注意: 使用for-in语句遍历数组元素的时候遍历出来是数组的下标。
	
	2. 可以用于遍历对象的所有属性数据。 注意: 使用for-in语句遍历对象的属性的时候,遍历出来的是对象的属性名。
*/

	var arr = [12,13,19,15,16];

/*
for-in语句遍历数组元素
	for(var index in arr){
		document.write(arr[index]+",");		
	}

普通的for循环遍历数组的元素

	for(var index = 0 ; index<arr.length ; index++){
		document.write(arr[index]+",");	
	}
*/	
	
	function Person(id , name){
		this.id = id;
		this.name = name;	
	}
1.5 with
with语句:有了 With 语句,在存取对象属性和调用方法时就不用重复指定对象。
	 格式:
	 with(对象){
	 }
with (document) {
		for (var i = 0; i < 5; i++) {

			for (var j = 0; j <= i; j++) {
				write("* ");
			}
			write("<br/>");
		}
		write("<hr/>");
	}

	function Person(id, name) {
		this.id = id;
		this.name = name;
	}

	//创建一个对象
	var p = new Person(110, "狗娃");

	with (p) {
		document.write("编号:" + p.id);
		document.write("姓名:" + name);
	}
2.循环语句的练习
①显示"*"为正方形,5行5列。
	for(var i = 0 ; i<5;  i++){ // 控制行数
		for(var j  = 0 ; j<5 ; j++){ //控制列数
			document.write("* ");	
		}	
		//换行
		document.write("<br/>");
	}
	document.write("<hr/>");
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * * 
②输出一个直角三角形
* 
	** 
	*** 
	**** 
	***** 
for(var i = 0 ; i<5; i++){	
		for(var j  =0 ; j<=i ; j++){
			document.write("* ");	
		}	
		document.write("<br/>");
	}
document.write("<hr/>");
③打印九九乘法表
1*1=1  
2*1=2  2*2=4  
3*1=3  3*2=6  3*3=9  
4*1=4  4*2=8  4*3=12  4*4=16  
5*1=5  5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  
	for(var i = 1 ; i<= 9 ; i++){
		for(var j = 1 ; j<=i ; j++){
			document.write(i+"*"+j+"="+(i*j)+"  ");	
		}	
		document.write("<br/>");
	}
//创建一个对象
	var  p = new Person(110,"狗娃");
	for(var property in p){
		document.write(p[property]+",");	
	}
3.函数的定义
函数的定义格式:
	function 函数名(形参列表){
		函数体 ;	
	}
javascript的函数要注意的细节:
	1. 在 javascript中函数 定义形参时是不能使用var关键字声明变量 的。
	2. 在javascript中 的函数是没有 返回值类型 的,如果函数需要返回数据给调用者,直接返回即可,如果不需要返回则不返回。
	3. 在 javascript中是没有函数 重载 的概念 的,后定义的同名函数会直接覆盖前面定义同名函数。
	4. 在javascript中任何的函数内部都隐式的维护了一个arguments(数组)的对象,给函数 传递数据的时候,是会先传递到arguments对象中,
	然后再由arguments对象分配数据给形参的。
需求:定义一个函数做两个参数的加法功能。
	function  add(a,b){
		var sum = a+b;
		document.write("两个参数的总和:"+ sum);	
		//return sum;
	}
	function add(){
		document.write("长度:"+arguments.length+"<br/>");
		for(var index = 0 ; index<arguments.length ; index++){
			document.write(arguments[index]+",");	
		}
		//var sum  = a+b+c;	
		//var sum = 0;
		//document.write("三个参数的总和:"+ sum);
	}
	//调用函数
	add(11,21,13,14);
4.函数的作业
月份:<input id="month" type="text" /><input type="button" value="查询" onclick="showDay()" />
	function showDay(){
		//找到对应 的标签对象。
		var inputObj = document.getElementById("month");
		//获取input标签数据
		var month = inputObj.value;
		/*
		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
			alert("本月是31天");	
		}else if(month==4||month==6||month==9||month==11){
			alert("本月是30天");	
		}else if(month==2){
			alert("本月是28天");	
		}else{
			alert("没有该月份");	
		}
		*/
		
		month = parseInt(month);
		switch(month){
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				alert("本月是31天");
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				alert("本月是30天");
				break;
			case 2:
				alert("本月是28天");
				break;
			default:
				alert("没有该月份");
				break;
		}
	}
5.String、date对象
5.1 String
var str1 = new String("hello");
	var str2 = new String("hello");
	document.write("两个字符串的对象一样吗?"+(str1.toString()==str2.toString()));
创建一个字符串的方式:
方式1:
	new String("字符串的内容");
方式2:
	var str = "字符串的内容";
字符串常用的方法:
	anchor()   生产锚点
	blink()     为元素添加blink标签 
	charAt()     返回指定索引位置处的字符。
	charCodeAt() 回一个整数,代表指定位置上字符的 Unicode 编码。
	fontcolor()  把带有 COLOR 属性的一个 HTML <FONT> 标记放置在 String 对象中的文本两端
	indexOf()    返回 String 对象内第一次出现子字符串的字符位置
	italics()    把 HTML <I> 标记放置在 String 对象中的文本两端。 
	link()         把一个有 HREF 属性的 HTML 锚点放置在 String 对象中的文本两端。
	replace()      返回根据正则表达式进行文字替换后的字符串的复制
	split()        切割   
	Substr()       截取子串
	toUpperCase()  转大写
	toLowerCase    转小写
*/
	document.write("第五章".anchor("five")+"<br/>");
	document.write("第五章".blink()+"<br/>");
	document.write("abc".charAt(1)+"<br/>");
	document.write("abc".charCodeAt(1)+"<br/>"); //chatCodeAt返回的是索引值对应的字符的码值。 
	document.write("第六章".fontcolor("red")+"<br/>"); //fontcolor() 给字符串添加font标签,然后设置color的属性值。
	document.write("abchellohehehello".indexOf("hello")+"<br/>"); //返回指定字符串第一次出现的索引值。
	document.write("第五章".italics()+"<br/>"); //给文本添加一个i标签,把文本内容设置成斜体。
	document.write("传智".link("http://www.itcast.cn")+"<br/>"); // 给文本添加一个a标签,
	document.write("明天我们讲xml".replace("xml","DOM编程")+"<br/>"); // 给文本添加一个a标签,
	var str = "我们-大家-好";
	var arr = str.split("-");
	for(var index = 0 ; index<arr.length ; index++){
		document.write(arr[index]+",");	
	}
	document.write("<br/>");
	document.write("abc".toUpperCase()+"<br/>"); //转大写
	document.write("ABC".toLowerCase()+"<br/>");  //转小写
5.2 date对象
var date = new Date(); //获取到当前的系统时间
	document.write("年:"+ date.getFullYear()+"<br/>");
	document.write("月:"+ (date.getMonth()+1)+"<br/>");
	document.write("日:"+ date.getDate()+"<br/>");
	document.write("时:"+ date.getHours()+"<br/>");
	document.write("分:"+ date.getMinutes()+"<br/>");
	document.write("秒:"+ date.getSeconds()+"<br/>");
	//xxxx年yy月dd日  hh:mm:ss
	//document.write("当前时间是:"+date.toLocaleString());
	document.write("当前时间是:"+date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日 "+
	date.getHours()+":"+date.getMinutes()+":"+date.getSeconds());
5.3 date练习
显示当前的系统时间
function getCurrentTime(){
		//获取到当前的系统时间
		var date = new Date();
		//把当前系统时间拼装成我指定的格式。
		var timeInfo =  date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日 "+
	date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
		//找span对象
		var  spanObj = document.getElementById("time");
		//设置span标签体的内容
		spanObj.innerHTML = timeInfo.fontcolor("red");
	}
	getCurrentTime();
	//定时方法.
	window.setInterval("getCurrentTime()",1000); /* setInterval   定时方法,第一个参数要指定调用的代码,第二参数是每隔指定的毫秒数调用指定的代码。*/
6.Number、math、数组对象
6.1 Number
创建Number对象的方式:	
	方式1:
		var 变量=  new Number(数字)	
	方式2:  
		var 变量 = 数字;	
常用的方法:	
	toString()  把数字转换成指定进制形式的字符串。
	toFixed()   指定保留小数位,而且还带四舍五入的功能。
*/
	var  num = 10; // 十进制
	document.write("十进制:"+num.toString()+"<br/>");
	document.write("二进制:"+num.toString(2)+"<br/>"); 
	document.write("八进制:"+num.toString(8)+"<br/>"); 
	document.write("十六进制:"+num.toString(16)+"<br/>"); 
	document.write("三进制:"+num.toString(3)+"<br/>");   // 101
	var num2 = 3.455;
	document.write("保留两位小数:"+num2.toFixed(2));	
6.2 Math对象
ceil 		向上取整
floor()   向下取整
random()  随机数方法 //  产生的伪随机数介于 0 和 1 之间(含 0,不含 1),
round     四舍五入
document.write("向上取整:"+ Math.ceil(3.14)+"<br/>");
document.write("向下取整:"+ Math.floor(3.14)+"<br/>");
document.write("随机数:"+ Math.random()+"<br/>");
document.write("四舍五入:"+ Math.round(3.75)+"<br/>");
6.3 数组对象
Array数组对象:
创建数组的方式1:
var 变量名 = new Array();  创建一个长度为0的数组。
方式2:
var 变量名= new Array(长度) 创建一个指定长度的数组对象。
方式3:
var 变量名 = new Array("元素1","元素2"...);  给数组指定元素创建数组 的对象。
方式4:
var 变量名 = ["元素1","元素2"...];
数组要注意的细节:
1.  在javascript中数组的长度是可以发生变化的。
var arr = new Array(3); //创建了一个长度为0的数组对象。
	arr[100] = 10;
	document.write("arr长度:"+arr.length+"<br/>");
	var arr2 = new Array("狗娃","狗剩","铁蛋");
	arr2 = ["狗娃","狗剩","铁蛋","张三"];
	document.write("arr2长度:"+arr2.length+"<br/>");
6.4 数组对象的方法
	var arr1 = ["狗娃","狗剩","铁蛋"];
	var arr2 = ["永康","才厚"];
	/*
	arr1 = arr1.concat(arr2); //concat把arr1与arr2的数组元素组成一个新的数组返回。
	for(var index in arr1){
		document.write(arr1[index]+",");	
	}
	var elements = arr1.join(","); // join使用指定的分隔符把数组中的元素拼装成一个字符串返回。
	document.write("数组的元素:"+elements);
	pop :移除数组中的最后一个元素并返回该元素。
	document.write("删除最后的一个元素并返回:"+arr1.pop()+"<br/>");
	arr1.push("永康"); // 将新元素添加到一个数组中,并返回数组的新长度值。
	arr1.reverse(); //翻转数组的元素
	document.write("删除第一个元素并返回:"+arr1.shift()+"<br/>"); //移除数组中第一个元素,并且返回。
	var subArr = arr1.slice(1,2); //指定数组 的开始索引值与结束索引值截取数组的元素,并且返回子数组。
	document.write("子数组的元素:"+subArr.join(",")+"<br/>");
	arr1 = [19,1,20,5];
	arr1.sort(sortNumber);  //排序,排序的时候一定要传入排序的方法。
	function sortNumber(num1,num2){
		return num1-num2;
	}
	arr1.splice(1,1,"张三","李四","王五"); //第一个参数是开始删除元素的 索引值, 第二参数是删除元素的个数,往后的数据就是插入的元素。
	*/
	document.write("数组的元素:"+arr1.join(","));
7.自定义对象
/*
自定义对象:
在javascript没有类的概念,只要有函数即可创建对象。
	自定义对象的方式1: 使用无参的函数创建对象。
	例子:
		function Person(){}
		var p = new Person(); //创建了一个Person对象了
		p.id = 110;
		p.name = "狗娃";
	方式2:使用带参的函数创建对象。
		function Person(id,name){
			this.id = id;
			this.name = name;	
			this.say = function(){
				alert(name+"呵呵");	
			}
		}
		var p = new Person(110,"狗剩");	//创建对象
	方式3: 使用Object函数创建对象
		var p = new Object();
		p.id = 110;
		p.name = "铁蛋";
	方式4:使用字面量的方式创建.
		var p = {
			id:110,
			name:"狗娃",
			say:function(){
				alert(this.name+"呵呵");	
		}	
	}		。
		
*/	
	var p = {
		id:110,
		name:"狗娃",
		say:function(){
			alert(this.name+"呵呵");	
		}	
	};	
	document.write("编号:"+ p.id+" 姓名:"+ p.name);
	p.say();
8.自定义对象的作业
编写一个js文件,在js文件中自定义一个数组工具对象。该工具对象要有一个找到最大值的方法,与找元素对应的索引值的方法
创建ArrayTool的对象
 
var tool = new ArrayTool();

function ArrayTool(){
	
	//找最大值
	this.getMax = function(arr){
		var max = arr[0];
		for(var i = 1 ; i<arr.length ;i++){
			if(arr[i]>max){
				max = arr[i];	
			}	
		}
		return max;
	}
	
	//找元素 的索引值
	this.searchEle = function(arr,target){
		for(var i = 0 ; i<arr.length  ; i++){
			if(arr[i] ==target){
				return i;	
			}	
		}	
		return -1;
	}

}
var arr = [12,15,9,4];
var max = tool.getMax(arr);
document.write("最大值:"+ max+"<br/>");

var index = tool.searchEle(arr,9);
document.write("找到的索引值是:"+ index);
9.Prototype原型
/*
需求:想把getMax与searchEle方法添加 到数组对象中。
	functoin Array(){
		this.prototype = new Object();	
		this.getMax = function(){
		}
	}	
Prototype注意的细节:
	1.	prototype是函数(function)的一个必备属性(书面一点的说法是"保留属性")(只要是function,就一定有一个prototype属性)
	2.	prototype的值是一个对象
	3.	可以任意修改函数的prototype属性的值。
	4.	一个对象会自动拥有prototype的所有成员属性和方法。	
*/
	Array.prototype.getMax = function(){
		var max = this[0];
		for(var index = 1; index<this.length ; index++){
			if(this[index]>max){
				max = this[index];	
			}	
		}
		return max;
	}
	
	
	Array.prototype.searchEle = function(target){
		for(var i = 0 ; i<this.length ; i++){
			if(target==this[i]){
				return i;	
			}	
		}
		return -1;
			
	}
	
	//var arr = new Array(12,4,17,9);
	var arr = [12,4,17,9];
	var max = arr.getMax();
	var index = arr.searchEle(9);
	document.write("最大值:"+ max+"<br/>");
	document.write("索引值:"+ index+"<br/>");
10.原型的作业
练习: 给字符串对象添加一个toCharArray的方法,然后再添加一个reverse(翻转)的 方法
//把 字符串转换成字符数组
	String.prototype.toCharArray = function(){
		var arr = new Array();
		for(var index = 0; index<this.length ;index++){
			arr[index] = this.charAt(index);	
		}
		return arr;
	}
	String.prototype.reverse = function(){
		//想把字符串转换成字符数组
		var arr = this.toCharArray();
		arr.reverse();
		return arr.join("");
	}
	
	var str = "你们厉害啊";
	var charArr = str.toCharArray();
	document.write("数组的元素:"+charArr.join(","));
	str = str.reverse();
	document.write("<br/>翻转后的字符串:"+str);