<%@ Page Language="C#" AutoEventWireup="true" CodeFile="复合数据类型.aspx.cs" Inherits="复合数据类型" %>

<!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 runat="server">
    <title>复合数据类型</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <script type="text/javascript">
    //对象和数组
    //对象是js中封装了一套操作方法和属性的类实例
    //常用的内置对象
    //在面向对象的设计模式中,将数据和处理数据的方法捆绑在一起形成一个整体,成为对象
    //可以使用new运算符来调用对象的构造函数,从而创建一个对象
    //var obj = new Object();   //创建一个Object对象
    //要访问已经创建对象的属性或方法,使用.
    //obj.toString();     //作为字符串输出,调用了obj的toString方法
    
    //          js中常用的对象
    //
    //Object:所有对象的基础对象
    //Array:数组对象,封装了数组的操作和属性
    //ActiveXObject:活动控件对象
    //arguments:参数对象,正在调用的函数的参数
    //Boolen:布尔对象,提供同布尔类型等价的功能
    //Date:日期对象,封装日期相关的操作和属性的对象
    //Error:错误对象,保存错误信息
    //Function:函数对象,用于创建函数
    //Global:全局对象,所有的全局函数和全局常量归该对象所有
    //Math:数学对象,提供基本的数学函数和常量
    //Number:数字对象,代表数值数据类型和提供常数的对象
    //RegExp:正则表达式对象,报存正则表达式信息的对象
    //String:字符串对象,提供串操作和属性的对象
    
    //              日期对象
    //
    //date = new Date();//直接创建,包含了创建时的时间值
    //date = new Date(val);//创建一个与1970年1月1日午夜全球标准时间相差val毫秒的日期
    //date = new Date(y,m,d[,h[,min[,sec[,ms]]]]);//创建指定年月日时分秒的日期,时分秒为可选项
    
    var cur = new Date();
    var years = cur.getYear();
    var months = cur.getMonth();
    var days = cur.getDate();
    var hours = cur.getHours();
    var minutes = cur.getMinutes();
    var seconds = cur.getSeconds();    
    alert("此时是:"+years +"年"+(months+1)+"月"+days+"日"+hours+"时"+minutes+"分"+seconds+"秒");
    
    //Date对象的常用方法
    //getDate():返回对象中本地时间表示的日期
    //getYear():返回对象中本地时间表示的年值
    //getMonth():返回对象中本地时间表示的月份值
    //             注意:所取得的月值等于0~11间的数,且总比本地时间月数小1
    //getDay():返回星期。注意:0~6表示星期天~星期六
    //getHour():返回小时
    //getSeconds():返回秒
    //getMinutes()返回分钟
    //setDate(dateVal):设置日期
    //setYeat(yearVal):设置年份
    //setMonth(MonthVal):设置月份
    
    var dateObj = new Date();
    dateObj.setYear(1989);
    dateObj.setFullYear(1989);
    dateObj.setDate(23);
    dateObj.setMonth(1);
    alert("dateObj中设定的时间为:" + dateObj.getFullYear() + "年" + (dateObj.getMonth()+1) + "月" + dateObj.getDate() + "日");
    
    //            全局对象
    //
    //全局对象是所有全局方法的拥有者,用来统一管理全局方法(即全局函数)
    //该对象不能使用new运算符创建对象实例,所有方法直接调用即可
    //        常用Global对象的方法
    //isNaN(value):判断value是否是NaN(Not a number,即不是数字),返回一个布尔值
    //parseFloat(string):返回由字符串string转换得到的浮点数
    //parseInt(string):返回string转换得到的整数
    
    var a = NaN;        //定义非数字常量
    var b = "123";      //字符串样式数字
    var c = 123;        //数字变量
    var d ="1.23";      //字符串样式数字
    
    var ta = isNaN(a);
    var tb = isNaN(b);
    var tc = isNaN(c);
    document.write(ta + "、" + tb + "、" + tc + "<br>");
    
    var ib = parseInt(b);
    if(ib == c)
    {
        document.write(ib + "<br>");
    }
    
    var id =parseFloat(d);
    if(id == 1.23)
    {
        document.write(id+"<br>");
    }
    
    //           数学对象
    //
    //和Global一样不能使用new运算符创建,Math对象在程序运行时
    //有JavaScript环境创建并初始化
    //调用方法:Math.[ {属性名|方法名} ];
    //常用方法和属性:
    
    //名称       类别           功能描述
    //PI    属性    返回圆周率
    //SQRT2 属性    返回2的平方根值
    //abs() 方法    返回数字的绝对值
    //cos()
    //sin()
    //max() 方法    返回给定组数中的最大值
    //min()
    //sqrt()方法    返回给定数的平方根
    //Tan()         正切
    //round()方法   返回与给定数最接近的整数
    //log() 方法    自然对数
    //pow() 方法    返回给定数的指定次幂
    
    //求圆面积
    var r = 2;
    var pi = Math.PI;
    var s =pi*r*r;
    document.write("半径为2单位的圆面积为:" + s + "单位<br>");
    //求sin90度,求绝对值
    var r1 = Math.sin(Math.PI/2);
    var r2 = -1;
    var r3 = Math.abs(r2);
    document.write(r1+"、"+r3+"<br>");
    
    //            字符串对象
    //通过String对象,可以对字符串进行剪切、合并、替换等操作
    //可以调用该对象的构造函数创建一个实例,其实在定义一个字符串类型变量时也就创建了一个String对象实例
    //对象名.方法名,对象名.属性名
    //构造函数:String( [strVal] );参数strVal是一个字符串,可选项,创建一个包含值为strVal的String对象
    
    //讲静夜思的各部分分别取出来,并格式化输出
    var comment = "静夜思李白床前明月光,疑似地上霜。举头望明月,低头思故乡。";
    var partial = comment.substring(0,3);//取出标题
    partial = partial.bold();//标题加粗
    document.write("<p align=\"center\">");
    document.write(partial);
    partial = comment.slice(3,5);//取出作者
    document.write("<br>" + partial);
    partial = comment.slice(5,17);//取出第一句
    partial = partial.fontcolor("gray");//设置颜色灰色
    document.write("<br>" + partial);
    partial = comment.slice(17,29);//取出第二句
    partial = partial.fontcolor("gray");//设置颜色灰色   
    document.write("<br>" + partial + "</p>");
    
    //               数组对象Array
    //创建方式
    //var a = new Array();                        //空数组
    //var a = new Array(10,20,30,"string",40);    //五个元素,js中数组个元素类型可以不同
    //var a = [10,20,30,"string",40];             //效果和上完全相同
    //var a = new Array(3);                       //指定长度创建数组
    
    var poets = new Array("王维","杜甫","李白","白居易");
    document.write("古代诗人:<br>");
    for( n in poets)                              //逐个输出数组元素
    {
        document.write("<li>"+poets[n]);          //输出诗人名字
    }
    </script>
    </div>
    </form>
</body>
</html>