(3)JavaScript基础(基本语法:变量与数据类型、类型转换、运算符、流程控制、函数、对象、自定义对象、原型)

1 javascript基础语言

        javascript语法体系
            1)EMCA基础语法(统一)
            2)BOM编程(不统一)
            3)DOM编程(不统一)
    1.1 javascript使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript基础</title>
<script type="text/javascript">
	//java  单行 //  多行 /* */  文档注释  /**  */  javadoc
	//css  多行注释  /* */
	//javascript  单行 //   多行  /* */
	
	/*
	常用的函数:
		alert("提示框");
		document.write("向浏览器输出内容");
	*/
	//alert("提示框");
	//document.write("输出内容");
	
	/*
	javascript的使用方法:
		1)内部javacript:
			a)在html页面中使用<script>标签,在<script>标签体中写js内容
			b)弊端:和html代码混杂在一起,不好维护,不好重用
		
		2)外部javascript(推荐使用)
	*/

</script>

<!-- 导入外部js文件
	注意: 不能使用<script src="01.j/s"> 空标签方式导入
 -->
<script src="01.js"></script>

</head>

<body>
</body>
</html>

    1.2 变量和数据类型

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>变量和数据类型</title>
<script type="text/javascript">
	/*
	1)定义和赋值变量: var 变量名=值;
		注意:
			1)使用var关键词定义变量,var可以省略的,但是不建议省略var
			2) 在js中可以重复定义变量,后面定义的变量会覆盖前面的变量。
			3) js是弱类型语言,使用var来定义任何数据类型
			4)js中变量的类型是由变量的值决定的,所以只定义不赋值的变量,就是一个未赋值变量(undefined),未赋值的变量不能使用
			
		typeof(变量): 查看变量的数据类型
	
	2)js的数据类型分类:
		a)number: 无论整数还是小数,都是number类型
		b) string:  无论字符还是字符串,都是string类型
		c) boolean
		d) object  对象类型
	*/
	var a = 10;
	//var a = 20;
	var b = 3.14;
	var c = 'c';
	var d = "hello";
	var e = true;
	var f = new Object();
	document.write("a的值为:"+a +",a的数据类型是:"+typeof(a)+"<br/>");
	document.write("b的值为:"+b +",b的数据类型是:"+typeof(b)+"<br/>");
	document.write("c的值为:"+c +",c的数据类型是:"+typeof(c)+"<br/>");
	document.write("d的值为:"+d +",d的数据类型是:"+typeof(d)+"<br/>");
	document.write("e的值为:"+e +",e的数据类型是:"+typeof(e)+"<br/>");
	document.write("f的值为:"+f +",f的数据类型是:"+typeof(f)+"<br/>");
</script>
</head>

<body>
</body>
</html>

1.3 类型转换函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>类型转换函数</title>
<script type="text/javascript">
	/*
	string->整数: parseInt(变量) 
	注意:
		1)使用parseInt函数转换时,转换的内容中的第一个是数值类型,就可以继续转换,直到遇到非数组类型为止。	
	
	
	string->小数: parseFloat(变量)
	
	*/
	var a = "10";
	a = "10a";
	document.write("a的类型是(转换前):"+typeof(a)+"<br/>");
	//转换
	a = parseInt(a);
	document.write("a的类型是(转换后):"+typeof(a)+",值为:"+a+"<br/>");
	
	var b = "3.14";
	b = parseFloat(b);
	document.write("b的类型是(转换后):"+typeof(b)+",值为:"+b+"<br/>");
</script>
</head>

<body>
</body>
</html>

         string->number(整数) :  parserInt(变量)

         string->number(小数):  parserFloat(变量)
    1.4 运算符

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>运算符</title>
<script type="text/javascript">
	/*
	1)算术运算符: + - * /  %
	2)比较运算符: > <  >=  <= ==
	3)逻辑运算符: &&  ||   !
	4)三目运算符:  表达式 ? true的结果 : false的结果  
	
	注意:
		在js中,布尔值可以用true用1来代表,false用0来代表
	*/
	/*
	var a = 10;
	var b = false;
	document.write("结果为:"+(a/b)+"<br/>");
	document.write("结果为:"+(a+b)+"<br/>");
	*/
	
	/*
	var a = 10;
	var b = 20;
	document.write("结果为:" +(a<b) + "<br/>");
	*/
	
	var a = 1;
	var b = true;
	document.write("结果为:"+(a=b));
	
	
	/*
	document.write("结果为:"+(false&&true)+"<br/>");
	document.write("结果为:"+(false||true)+"<br/>");
	document.write("结果为:"+(!true)+"<br/>");
	*/
	
	/*
	var age = 12;
	document.write( age>=18 ? "成年人" : "未成年人");
	*/
</script>
</head>

<body>
</body>
</html>

    1.5 流程控制语句

        if
        swtich
        for
        while
        do-while
        for-in
        with

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
<script type="text/javascript">
	/*
	if语句
		if(表达式){
			语句	
		}else{
			语句
		}
		
		条件可以是:
			布尔值:true:成立 ; false:不成立
			number:非0:成立; 0: 不成立
			string: 非空字符串: 成立 ; 空字符串: 不成立
			object: 非null: 成立;  null:不成立
	*/
	/*
	if(null){
		alert("条件成立");	
	}else{
		alert("条件不成立");
	}
	*/
	
	
	/*
	swtich语句
		swtich(变量){
		case 选项1:
			语句;
			break;  如果不break,就会继续下面选项的语句	
		case 选项2::
			语句;
			break;
		default:
			默认;
		}
	
		注意:
			case的条件:
				1)可以是常量. string,number
				2)可以是变量。(java是不能是变量)
				3)可以是表达式 (java不能这样)
	*/
	/*
	var i = "b";
	var b = "b";
	switch(i){
	case "a":
		document.write("你选择了a");
		break;	
	case b:
		document.write("你选择了b");
		break;
	case "c":
		document.write("你选择了c");
		break;
	case "d":
		document.write("你选择了d");
		break;
	default:
		document.write("你选择了其他");
		break;
	}
	*/
	/*
	var age = 20;
	switch(true){
	case age>=18:
		document.write("他是成年人");
		break;
	case age<18:
		document.write("他是未成年人");
		break;
	}
	*/
	
	/*
	for语句:
		for(初始化语句;判断进入条件;步长语句){
			语句
		}
	
	*/
	/*
	var result = 0;
	for(var i=1;i<=100;i++){
		result+=i;
	}
	document.write("结果为:"+result);
	*/
	
	/*
	while语句
		while(表达式){  true的时候才进入循环
			语句
		}
	*/
	/*
	var i = 1;
	while(i<=5){
		document.write("helloworld<br/>");
		i++;
	}
	*/
	
	/*
	do-while语句
		do{
			语句
		}while(表达式)
		
	*/
	var i = 1;
	do{
		document.write("helloworld<br/>");
		i++;	
	}while(i<=5);
	
	
	
</script>
</head>

<body>
</body>
</html>
    /*
    for-in语句:
        for(var 遍历 in  数组|对象){
                
        }
    
        作用:
            1)遍历数组
            2)对象
            注意:
                遍历对象的时候,变量是属性的名称,如果获取属性值,则 p[i]; 
    */
    //定义数组
    /*
    var arr = [10,20,30,40];
    
    //遍历数组
    //使用for循环
    for(var i=0;i<arr.length;i++){
        document.write(arr[i]+",");    
    }
    document.write("<hr/>");
    //使用for-in遍历
    for(var i in arr){
        document.write(arr[i]+",");        
    }
    */
    
    //定义对象
    function Person(name,age){
        this.name = name;
        this.age = age;
    }
    //创建对象
    var p = new Person("eric",20);
    
    //遍历对象
    for(var i in p){
        document.write(p[i]+"<br/>");    
    }
    /*
    with语句:方便函数的调用
        with(对象){
            直接写对象的方法,无需写对象的名称    
        }
*/

    with(document){
        
        for(var i=1;i<=5;i++){ //行数
            for(var j=1;j<=i;j++){ // 控制星星数
                write("*&nbsp;");
            }
            write("<br/>");
        }
        write("<hr/>");
        
        for(var i=1;i<=9;i++){
            for(var j=1;j<=i;j++){
                write(i+"*"+j+"="+(i*j)+"&nbsp;");
            }
            write("<br/>");
        }
        
    }

1.6 函数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>函数</title>
<script type="text/javascript">
	/*
	函数定义:
		function 函数名称(形式参数列表){
			语句	
		}
	
	调用函数:
		函数名称(实际参数列表);
		
		注意:
			1)js的函数使用function定义,但是形式参数列表不能使用var关键词
			2)js的函数可以有返回值,直接使用return关键词返回即可,不需要声明返回值类型
			3) js没有方法重载的概念,后面定义的函数会覆盖前面的函数。
			4)js中的形式参数和实际参数的数量可以不一致,依然可以调用。
			5)js的每个函数中都隐藏了一个叫arguments的数组,这个数组用于接收函数调用时传递过来的实际参数值。
			6)arguments数组接收完实际参数后,会逐一的依次从左到右赋值给形式参数,如果实际参数数量大于形式参数,则丢失剩下的实际参数
	
	*/
	function add(a,b){ //a=10  b=20  40 
		//alert(arguments.length);
		for(var i=0;i<arguments.length;i++){
			document.write(arguments[i]+",");	
		}	
		var result = a+b;
		document.write("两个参数的结果为:"+result);	
		//return result;
	}
	
	function add(a,b,c){ // a=10  b=20  c undefined  a+b+c=NaN
		var result = a+b+c;
		document.write("三个参数的结果为:"+result);
	}
	
	//var s = add(10,20);
	//document.write("返回值:"+s);
	add(10,20);
	
	
	/*
	实际参数<形式参数: NaN
	实际参数>形式参数: 取前面的实际参数,后面的参数丢失
	
	*/
	
	
	
</script>
</head>

<body>
</body>
</html>

    1.7 基于对象编程

  内置对象

            String对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>String对象</title>
<script type="text/javascript">
	//方式一:定义String对象
	/*
	var str1 = new String("hello");
	var str2 = new String("hello");
	
	document.write("结果:"+(str1==str2)+"<br/>");
	//valueOf():该方法返回对象的内容
	document.write("结果:"+(str1.valueOf()==str2.valueOf()));
	*/
	
	//方式二:
	/*
	var str1 = "hello";
	var str2 = "hello";
	
	document.write("结果:"+(str1==str2)+"<br/>");
	*/
	
	/*
	常用方法:
		charAt(): 返回指定索引的内容
		indexOf(): 返回首次出现指定字符的索引位置
		lastIndexOf(): 返回最后出现指定字符的索引位置
		fontcolor(): 直接给字符串添加颜色
		replace(): 替换指定的字符串
		split(): 使用指定字符串切割字符串,返回字符串数组
		substring(start,end); 截取字符串,start:开始索引, end:结束索引
		substr(strat,[length]) 截取字符串, start:开始索引 length: 截取的字符串长度
	*/
	
	var str ="hellojava";
	document.write(str.charAt(4)+"<br/>");
	document.write(str.indexOf("a")+"<br/>");
	document.write(str.lastIndexOf("a")+"<br/>");
	document.write(str.fontcolor("#0000ff")+"<br/>");
	document.write(str.replace("java","itcast")+"<br/>");
	document.write(str.substring(5,9)+"<br/>");
	document.write(str.substr(5,4));
	
	/*
	var str = "java-net-php-平面";
	var strArray = str.split("-");
	for(var i=0;i<strArray.length;i++){
		document.write(strArray[i]+",");	
	}
	*/
</script>

</head>

<body>
</body>
</html>

          Number对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Number对象</title>
<script type="text/javascript">
    //方式一:定义Number对象
    /*
    var num1 = new Number(20);
    var num2 = new Number(20);
    */
    
    //方式二:
    /*
    var num1 = 20;
    var num2 = 20;
    
    document.write((num1==num2)+"<br/>");
    document.write(num1.valueOf()==num2.valueOf());
    */
    
    var b1 = new Boolean(true);
    var b2 = new Boolean(true);
    document.write((b1==b2)+"<br/>");
    document.write(b1.valueOf()==b2.valueOf());
</script>
</head>

<body>
</body>
</html>

            Boolean对象

            Math对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Math对象</title>
<script type="text/javascript">
	/*
	常用的方法:
		1)ceil(): 向上取整。 如果有小数部分的话,直接+1
		2)floor(): 向下取整。如果有小数部分的话,直接丢失小数部分,保利整数位
		3) round(): 四舍五入取整。满5进一
		4)random(): 生成一个随机的0-1的小数 .包含0,不包含1
		5)max(): 返回最大值
		6)min(): 返回最小值
	*/
	var num = 3.50;
	document.write(Math.ceil(num)+"<br/>");
	document.write(Math.floor(num)+"<br/>");
	document.write(Math.round(num)+"<br/>");
	document.write(Math.round(Math.random()*100)+"<br/>");
	document.write(Math.max(10,6,54,23,76)+"<br/>");
	document.write(Math.min(10,6,54,23,76)+"<br/>");
</script>
</head>

<body>
</body>
</html>

            Date对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Date对象</title>
<script type="text/javascript">
	//创建日期
	var date = new Date(); //取当前系统日期时间    java: SimpleDateFormat对象 yyyy-MM-dd 格式化
	//document.write(date);  //默认格式
	//格式: 2015年06月01日 15时12分30秒
	//年份
	document.write(date.getFullYear()+"年");
	//月
	document.write((date.getMonth()+1)+"月");
	//日
	document.write(date.getDate()+"日");
	//星期
	document.write("星期"+date.getDay()+" ");
	//时
	document.write(date.getHours()+"时");
	//分
	document.write(date.getMinutes()+"分");
	//秒
	document.write(date.getSeconds()+"秒");

</script>
</head>

<body>
</body>
</html>

            Array数组对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Array数组</title>
<script type="text/javascript">
	/*
	注意:
		1)数组的长度会随着元素的添加而变化,不用担心出现索引位置越界的异常。
		2) js的数组可以存放任意类型的元素。
		
	*/
	//方式一:创建数组
	//1.1 指定数组长度
	//var arr = new Array(3);
	
	//1.2 不指定数组长度、默认0个元素
	//var arr = new Array();
	
	//1.3 指定具体内容
	//var arr = new Array(10,"hello",true);
	
	//方式二: 不需要new,直接指定内容
	var arr = [10,"java",false];

	//alert(arr.length);
	
	//给数组赋值
	/*
	arr[0]=10;
	arr[1]="hello";
	arr[2]=true;
	*/
	
	//alert(arr.length);
	//遍历  length属性: 表示数组的长度
	/*
	for(var i=0;i<arr.length;i++){
		document.write(arr[i]+",");	
	}
	*/
	
	/*
	常用的方法:
		join(字符串): 使用指定的字符串,把数组的所有元素连接在一起,最终组成一个新的字符串
		reverse(): 反转数组中的元素
	*/
	var arr = ["java","net","php","ios"];
	/*
	var str = arr.join("-");
	document.write(str);
	*/
	for(var i=0;i<arr.length;i++){
		document.write(arr[i]+",");	
	}
	document.write("<hr/>");
	//反转
	arr = arr.reverse();
	
	for(var i=0;i<arr.length;i++){
		document.write(arr[i]+",");	
	}

</script>
</head>

<body>
</body>
</html>

  1.8 自定义对象
        java:使用class来定义对象

        javascript: 使用function来定义对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自定义对象</title>
<script type="text/javascript">
	/*
	定义对象方式一:有参数的构造函数 (推荐)
		function 对象名称(形式参数){
			定义属性
			定义方法	
		}
		
	创建对象:
		var 变量 = new 对象名称(实际参数);
	*/
	/*
	//定义人对象
	function Person(name,age){ //this: 表示当前调用的对象
		//定义属性  赋值
		this.name = name;
		this.age = age;
		
		//定义方法
		this.say = function(){
				alert("这个对象的方法");
			}	
	}
	
	//创建人对象
	var p = new Person("狗娃",12);
	*/
	
	
	/*
	定义对象方式二: 无参数的构造函数
	
	
	//定义对象
	function Person(){
	}
	//创建对象
	var p = new Person();
	//追加属性
	p.name = "狗剩";
	p.age = 14;
	//追加方法
	p.say = function(){
		alert("狗剩的函数");	
	}
	*/
	
	
	/*
	定义对象的方式三:使用Object对象。 Object对象可以作为任意对象的模板
	
	
	//创建对象
	var p = new Object();
	//追加属性
	p.name = "狗蛋";
	p.age = 16;
	//追加方法
	p.say = function(){
		alert("狗蛋的函数");	
	}
	*/
	
	
	/*
	定义对象方式四:使用字面量的形式创建对象。 json语言(了解)
	
	*/
	//创建人对象
	var p = {
			//定义属性(属性名:属性值)
			"name":"铁蛋",
			"age": 20,
			//定义方法
			"say":function(){
					alert("铁蛋的函数");
				}
		};

	
	//查看属性值
	document.write(p.name);
	document.write(p.age);
	
	//调用对象方法
	p.say();
	
	/*
	document.write("<br/>");
	//使用for-in遍历对象
	for(var i in p){
		document.write(p[i]+"<br/>");	
	}
	*/



</script>
</head>

<body>
</body>
</html>

    1.9 原型

        给内置对象追加方法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>原型</title>
<!--
	问题: 不使用ArrayUtil工具,但也想实现search和max方法的功能
	预期解决方法: 想把search和max方法设计到Array内置对象中
    
    问题:如何给Array对象扩展两个方法呢?
    
    方案一:拿到Array定义对象的代码,在代码上加
    	function Array(){
        	this.join = function(){}
            this.reverse = function(){}
            this.saarch = function(){}   追加方法
        }
        拿不到Array对象的源码,行不通
        
        
     方案二:使用原型属性给Array对象添加方法
     	什么是原型?
        	1)js的每个对象中都包含有了原型属性(prototype)
            2)如果往某个对象的原型属性添加了方法,那么添加的这个方法就会自动地添加到当前对象的方法中。
            3) 原型的作用:给内置对象追加方法的
            
           function Array(){
           		//属性
           		this.prototype = new Prototype(); //原型对象
           		this.search = function(){}
           }
           原型对象
           function Prototype(){
           		this.search = function(){}
           
            }    
 -->

<script type="text/javascript">
	/*
		给Array追加一个search和max方法
	*/
	Array.prototype.search = function(target){
			//遍历
			for(var i=0;i<this.length;i++){
				if(this[i]==target){
					return i;	
				}	
			}
			return -1; //找不到就是-1
		}
		
	Array.prototype.max = function(){
			//存储最大值
			var max = this[0];
			for(var i=1;i<this.length;i++){
				if(this[i]>max){
					max = this[i];
				}
			}
			return max;
	}

	var arr = [10,43,21,65,3,87];
	
	var index = arr.search(87);
	document.write("位置是:"+index+"<br/>");
	
	var max = arr.max();
	document.write("最大值:"+max);


</script>
</head>

<body>

</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值