JavaScrpt ECMA对象

一.ECMAScript中的类
1.从传统意义上来说,ECMAScript不真正具有类

  • 事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词

2.ECMAScript定义了"对象定义",逻辑上等价于其他程序设计语言中的类

var o = new Object();

二.对象的概念与分类
1.概念:
(1)由ECMAScript定义的本地对象,即原生对象(native object),独立于宿主环境,完全由本规范定义其语义

(2)ECMAScript实现提供的,独立于宿主环境的所有对象,在 ECMAScript程序开始执行时出现:这意味着开发者不必明确实例化内置对象,它已被实例化了

(3)ECMA-262只定义了两个内置对象(built-in object),即Global和Math(也是本地对象;根据定义,每个内置对象都是本地对象)

(4)所有非本地对象都是宿主对象(host object),即由 ECMAScript实现的宿主环境提供的对象;所有BOM和DOM对象都是宿主对象

2.分类:
(1)object对象:ECMAScript中的所有对象都由该对象继承而来;该对象中的所有属性和方法都会出现在其他对象中

ToString():返回对象的原始字符串表示
var arr1=[1,'hello',11,'2',{'name':'Mo'}]
var ret=arr1.ToString()
console.log(ret)//1,hello,11,2,[object Object]
console.log(typeof ret)//string

ValueOf():返回最适合该对象的原始值
//对于许多对象,该方法的返回值与ToString()的返回值相同

(2)11种内置对象:

Array, String, Date, Math, Boolean, Number,  Function, Global, Error, RegExp, Object

在这里插入图片描述
3.在JS中除了null和undefined以外其他的数据类型都被定义成了对象;也可以用创建对象的方法定义变量;在JS程序大多数功能都是通过对象实现的

<script language="javascript">
    var aa=Number.MAX_VALUE; 
    //利用数字对象获取可表示最大数
    var bb=new String("hello JavaScript"); 
    //创建字符串对象
    var cc=new Date();
    //创建日期对象
    var dd=new Array("星期一","星期二","星期三","星期四"); 
    //数组对象
</script>

二.字符串String对象
1.创建String对象
(1)自动创建:

  • 调用String的对象属性/方法时自动创建对象,用完就丢弃刚创建的对象
  • 本身按基本数据类型存储
var str1='...'
//按照基本数据类型存储(存储在栈里)

var str1="hello world";//这里是String,不是Object,存储在栈里
console.log(typeof str1)//String
alert(str1.length);//此处创建了一个对象,用完丢弃
alert(str1.substr(1,5));//此处又创建了一个对象

(2)手工创建:

  • 采用new创建String对象,全局有效
var str2=new String('...')
//是一个String对象,按对象方式存储(存储在堆里)

var str2=new String("hello word");
console.log(typeof str2)//Object
alert(str2.length);
alert(str2.substr(1,3));

2.String对象的属性

length:获取字符串长度
var str1='hello';
var str2='String对象';
var str3='';
console.log(str1.length);//5
console.log(str2.length);//8
console.log(str3.length);//0

3.String对象的方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(1)格式编排方法:

//String对象提供了一组针对HTML格式的方法
//返回值列表
//给String对象加上特定标签,如:
x.anchor():返回锚定义字符串<a>x</a>
x.bold():返回粗体表示字符串<b>x</b>
x.italics():返回意大利斜体字符串<i>x</i>
x.sup():返回上标格式字符串<sup>x</sup>

var x="yuan";
var y="x.italics():"+x.italics();
document.write(y.fontsize(10));//<font size="10">x.italics():<i>yuan</i></font>

(2)大小写转换:

x.toLowerCase():所有字母全部变为小写
x.toUpperCase():所有字母全部变为大写
//说明:
//x代表String对象
var str1="AbcdEfgh"; 
var str2=str1.toLowerCase();
var str3=str1.toUpperCase();
alert(str2);//"abcdefgh"
alert(str3);//"ABCDEFGH"

(3)获取指定字符:

x.charAt(index):返回index位置的字符
x.charCodeAt(index):返回index位置的字符的Unicode编码
//说明:
//x代表String对象
//index代表字符位置;从0开始编号
var str1="welcome to the world of JS! 苑昊";
var str2=str1.charAt(28);
var str3=str1.charCodeAt(28);
alert(str2);//"苑"
alert(str3);//33489

(4)查询索引:

x.indexOf(findstr):返回第1个匹配到的字符的位置
x.lastIndexOf(findstr):返回最后1个匹配到的字符的位置
//说明:
//x代表String对象
//findstr代表字符
var str1="welcome to the world of JS!";
var str2=str1.indexOf("l");
var str3=str1.lastIndexOf("l");
alert(str2);//2
alert(str3);//18

x.match(regexp):返回匹配字符串的数组;如果没有匹配则返回null
x.search(regexp):返回匹配字符串的首字符位置索引
//说明:
//x代表String对象
//regexp代表正则表达式/字符串
var str1="welcome to the world of JS!";
var str2=str1.match("world");
var str3=str1.search("world");
alert(str2[0]);//"world"
alert(str3);//15

(5)子字符串处理:

  • 截取字符串:
x.substr(start,length):返回截取到的字符串
x.substring(start,end):返回截取到的字符串
//说明:
//x代表String对象
//start表示开始位置;第一个字符索引为0;包含该位置字符
//length表示截取长度(总共取几个字符,即截取到start+length-1)
//end表示结束位置;不包含该位置字符,即取到end-1
var str1="abcdefgh";
var str2=str1.substr(2,4);
var str3=str1.substring(2,4);
alert(str2);//"cdef"
alert(str3);//"cd"

x.slice(start,end):相当于python中的切片
//说明:
//x代表String对象
//start表示开始位置;第一个字符索引为0;包含该位置字符
//end表示结束位置;不包含该位置字符,即取到end-1
//start,end为负数代表从后开始数第几个;最后一个为-1
//注意start,end均大/小于0时要求start<end
var str1="abcdefgh";
var str2=str1.slice(2,4);
var str3=str1.slice(4);
var str4=str1.slice(2,-1);
var str5=str1.slice(-3,-1);
alert(str2);//"cd"
alert(str3);//"efgh"
alert(str4);//"cdefg"
alert(str5);//"fg"
  • 替换子字符串:
x.replace(findstr,tostr):返回findstr被替换为tostr后的字符串
//说明:
//x表示String对象
//findstr代表要替换字符串
//tostr用于替换原字符串的字符串
var str1="abcdefgh";
var str2=str1.replace("cd","aaa");
alert(str2);//"abaaaefgh"
  • 分割字符串:
x.split(separator,howmany):把一个字符串分割成字符串数组
//说明:
//separator表示用于分割的字符串/正则表达式;不包含在返回的数组中
//howmany表示最大分割次数;默认任意多次
var str1="一,二,三,四,五,六,日"; 
var strArray=str1.split(",");
alert(strArray[1]);//"二"
  • 连接字符串:
y=x.concat(addstr1...):用于连接两个或多个字符串,返回x+addstr1...
//不改变原字符串,返回连接了两/多个字符串的新字符串
//说明:
//x代表字符串对象
//addstr为要添加的字符串;可为任意多个
var str1="abcd"; 
var str2=str1.concat("efgh");
alert(str2);//"abcdefgh"
var str1="Hello ";
var str2="world!";
var str3=" Have a nice day!";
var n = str1.concat(str2,str3);
console.log(n)//"Hello world! Have a nice day!"

三.数组Array对象:用于在单个的变量中存储多个值
1.创建数组对象
(1)自动创建:

var arr=[...];
console.log(typeof arr);//object
var a=[1,2,3];

(2)手工创建:

var arr=new Array(size);
console.log(typeof arr);//object
//size表示数组中元素个数;可不指定
//如果只有1个参数且为数字,则该参数成为size
var arr=new Array(element0,element1...);
console.log(typeof arr);//object
//element表示数组中的元素
//可在创建时指定也可之后指定;元素类型允许不同
var cnweek=new Array(7);
    cnweek[0]="星期日";
    cnweek[1]="星期一";
    ...
    cnweek[6]="星期六";
var test=new Array(100,"a",true);
//有多个参数且均为数字时均视为数组中元素
var a=new Array(1,2,3);
console.log(a)

(3)创建二维数组:

var cnweek=new Array(7);
for (var i=0;i<=6;i++){
    cnweek[i]=new Array(2);
}
cnweek[0][0]="星期日";
cnweek[0][1]="Sunday";
cnweek[1][0]="星期一";
cnweek[1][1]="Monday";
...
cnweek[6][0]="星期六";
cnweek[6][1]="Saturday";

2.Array对象的属性

length:获取数组元素的个数
arr.length
var arr1=[1,'hello',[1,2],{'Name':'Mo'}//这是Object]
console.log(arr1.length)//4

3.Array对象的方法

在这里插入图片描述
(1)连接数组:

x.join(bystr):返回连接后的字符串
//Object拼接时比较特殊
//与字符串的split功能刚好相反
//说明:
//x代表数组对象
//bystr代表用于连接数组中元素的字符串
var arr1=[1, 2, 3, 4, 5, 6, 7];
var str1=arr1.join("-");
alert(str1);//"1-2-3-4-5-6-7"

x.concat(value,...):用于连接两/多个数组;返回x+value...
//说明:
//x表示数组
//value表示接到x后的值;可以是任意多个
//value可以是具体的值/数组对象(数组中元素分别放入)
var a = [1,2,3];
var a = new Array(1,2,3);
var b=a.concat(4,5) ;
alert(a.toString());//1,2,3
alert(b.toString());//1,2,3,4,5
alert(typeof b)//object

(2)数组排序:

x.reverse():用于颠倒数组中元素的顺序(直接修改原数组)
var arr1=[32, 12, 111, 444];
arr1.reverse();//颠倒数组元素
alert(arr1.toString());//444,111,12,32

x.sort(sortby):用于对数组的元素进行排序(直接修改原数组)
//说明:
//sortby表示规定排序顺序的函数;可选
//默认按字符编码的顺序排序:数字/字母从左往右比较;按从小到大排序;对应位均相同,位数多的靠后
var arr1=[32, 12, 111, 444];
arr1.sort();//排序数组元素
alert(arr1.toString());//111,12,32,444
var arr2=['George','John','Thomas','James','Adrew'];
arr2.sort();
alert(arr2.toSting());//Adrew,George,James,John,Thomas
//如需要按数的大小排序:
var arr1=[32, 12, 111, 444];
function intSort(a,b){
    if (a>b){
        return 1;//-1
    }
    else if(a<b){
        return -1;//1
    }
    else {
        return 0
    }
}
arr1.sort(intSort);
alert(arr1);//12,32,111,444
//相当于:
function IntSort(a,b){
    return a-b;
}

(3)数组切片:

x.slice(start,end)
//说明:
//x代表数组对象
//start表示开始位置索引(包含该位置);必需;第一个元素索引为0
//end是结束位置索引(不含该位置);可选,默认为到最后一个元素(含)
//start/end可为负数,表示从后往前数的编号;最后一个元素为-1
var arr1=['a','b','c','d','e','f','g','h'];
var arr2=arr1.slice(2,4);
var arr3=arr1.slice(4);
var arr4=arr1.slice(2,-1);
alert(arr2.toString());//"c,d" 
alert(arr3.toString());//"e,f,g,h"
alert(arr4.toString());//"c,d,e,f,g"

(4)删除子数组:

x.splice(start,deleteCount,value, ...):用于在指定位置对数组进行删除/插入(改变原数组)
//如果从arrayObject中删除了元素,返回的是被删除的元素构成的数组
//说明:
//x代表数组对象
//start表示开始位置索引
//删除时包含该位置元素;等于插入的第一个元素的索引
//deleteCount表示删除元素的个数;可选,默认为从start开始的所有
//value表示在start位置插入的数组元素;可选
//如要求只插入,deleteCount设为0
var a = [1,2,3,4,5,6,7,8];
a.splice(1,2);
alert(a)//[1,4,5,6,7,8]
a.splice(1,1);
alert(a);//[1,5,6,7,8]
a.splice(1,0,2,3);
alert(a);//[1,2,3,5,6,7,8]

(5)数组的进出栈操作:

x.push(value, ...):将value值添加到数组x的结尾(压栈)
//将每个value分别整体放入
x.pop():将数组x的最后一个元素删除(弹栈)      
//push,pop这两个方法模拟的是一个栈操作
//说明:
//x代表数组对象
//value可以为字符串/数字/数组等任何值
var arr1=[1,2,3];
arr1.push(4,5);
alert(arr1);//1,2,3,4,5
alert(arr1.length);//5
arr1.push([6,7]);
alert(arr1);//"1,2,3,4,5,[6,7]
alert(arr1.length);//6
arr1.pop();
alert(arr1);//1,2,3,4,5

x.unshift(value,...):将value值插入到数组x的开始
//将每个value分别整体放入
x.shift():将数组x的第一个元素删除
//说明:
//x代表数组对象
//value可以为字符串/数字/数组等任何值
var arr1=[1,2,3];
arr1.unshift(4,5);
alert(arr1);//4,5,1,2,3
arr1.unshift([6,7]);
alert(arr1);//[6,7],4,5,1,2,3
arr1.shift();
alert(arr1);//4,5,1,2,3

4.js的数组特性

1.java中数组的特性:规定是什么类型的数组,就只能装该类型
2.js中的数组特性
  ·可以装任意类型数据,没有任何限制.
  ·长度是随着下标变化的,用到多长就有多长
var arr5=['abc',123,1.14,true,null,undefined,new String('1213'),new Function('a','b','alert(a+b)')];
alert(arr5.length);//8
arr5[10]="hahaha";
alert(arr5.length);//11
alert(arr5[9]);//undefined

四.Date对象
1.创建Date对象

//方法1:不指定参数
var nowd1=new Date();
alert(nowd1.toLocaleString( ));
//方法2:参数为日期字符串
var nowd2=new Date("2004/3/20 11:12");
alert(nowd2.toLocaleString( ));
var nowd3=new Date("04/03/20 11:12");
alert(nowd3.toLocaleString( ));
//方法3:参数为毫秒数
var nowd3=new Date(5000);
alert(nowd3.toLocaleString( ));
alert(nowd3.toUTCString());
//方法4:参数为年月日小时分钟秒毫秒
//毫秒并不直接显示
var nowd4=new Date(2004,2,20,11,12,0,300);
alert(nowd4.toLocaleString( ));

2.Date对象的方法
(1)获取日期和时间:

获取日期和时间
getDate()                 获取日
getDay ()                 获取星期
getMonth ()               获取月(0-11getFullYear ()            获取完整年份
getYear ()                获取年
getHours ()               获取小时
getMinutes ()             获取分钟
getSeconds ()             获取秒
getMilliseconds ()        获取毫秒
getTime ()                返回累计毫秒数(1970/1/1午夜)

function getCurrentDate(){
        //1. 创建Date对象
        var date = new Date(); //没有填入任何参数那么就是当前时间
        //2. 获得当前年份
        var year = date.getFullYear();
        //3. 获得当前月份 js中月份是从0到11.
        var month = date.getMonth()+1;
        //4. 获得当前日
        var day = date.getDate();
        //5. 获得当前小时
        var hour = date.getHours();
        //6. 获得当前分钟
        var min = date.getMinutes();
        //7. 获得当前秒
        var sec = date.getSeconds();
        //8. 获得当前星期
        var week = date.getDay(); //没有getWeek
        // 2014年06月18日 15:40:30 星期三
        return year+"年"+changeNum(month)+"月"+day+"日 "+hour+":"+min+":"+sec+" "+parseWeek(week);
    }

alert(getCurrentDate());

//解决 自动补齐成两位数字的方法
    function changeNum(num){
    if(num < 10){
        return "0"+num;
    }else{
        return num;
    }

}
//将数字 0~6 转换成 星期日到星期六
    function parseWeek(week){
    var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    //             0      1      2      3 .............
    return arr[week];
}

(2)设置日期和时间:

setDate(day_of_month)     设置日
setMonth (month)          设置月
setFullYear (year)        设置年
setHours (hour)           设置小时
setMinutes (minute)       设置分钟
setSeconds (second)       设置秒
setMillliseconds (ms)     设置毫秒(0-999)
setTime (allms)           设置累计毫秒(1970/1/1午夜)
    
var x=new Date();
x.setFullYear (1997);//设置年1997
x.setMonth(7);//设置月7
x.setDate(1);//设置日1
x.setHours(5);//设置小时5
x.setMinutes(12);//设置分钟12
x.setSeconds(54);//设置秒54
x.setMilliseconds(230);//设置毫秒230
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日5点12分54秒
x.setTime(870409430000);//设置累计毫秒数
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日12点23分50秒  

(3)日期和时间的转换:

getTimezoneOffset():8个时区×15度×4/=480;
返回本地时间与GMT的时间差,以分钟为单位
toUTCString()
返回国际标准时间字符串
toLocalString()
返回本地格式时间字符串
Date.parse(x)
返回累计毫秒数(1970/1/1午夜到本地时间)
Date.UTC(x)
返回累计毫秒数(1970/1/1午夜到国际时间)

五.RegExp对象

//RegExp对象
    // 在表单验证时使用该对象验证用户填入的字符串是否符合规则.
    //创建正则对象方式1  参数1 正则表达式  参数2 验证模式  g global / i 忽略大小写. //参数2一般填写g就可以,也有“gi”.
    // 用户名 首字母必须是英文, 除了第一位其他只能是英文数字和_ . 长度最短不能少于6位 最长不能超过12位
    //----------------------------创建方式1
    /* var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$","g");
    //
    //验证字符串
    var str = "bc123";
    alert(reg1.test(str));// true
    
    //----------------------------创建方式2  /填写正则表达式/匹配模式;
    var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;
    
    alert(reg2.test(str));// true
     */
    //-------------------------------正则对象的方法-------------------
        //test方法  ==>  测试一个字符串是否复合 正则规则. 返回值是true 和false.
    
    //-------------------------String 中与正则结合的4个方法------------------.
    // macth search split replace
    var str = "hello world";
    
    //alert(str.match(/o/g)); //查找字符串中 复合正则的 内容.
    //alert(str.search(/h/g));// 0  查找字符串中符合正则表达式的内容位置
    //alert(str.split(/o/g)); // 按照正则表达式对字符串进行切割. 返回数组;
    alert(str.replace(/o/g, "s")); // hells wsrld  对字符串按照正则进行替换

六.Math对象

    //Math对象
    //该对象中的属性方法 和数学有关.
    //Math是内置对象 , 与Global的不同之处是, 在调用时 需要打出 "Math."前缀.
    //属性学习:
    //alert(Math.PI);
    //方法学习:
        //alert(Math.random()); // 获得随机数 0~1 不包括1.
        //alert(Math.round(1.5)); // 四舍五入
        //练习:获取1-100的随机整数,包括1和100
             //var num=Math.random();
            //num=num*10;
            //num=Math.round(num);
            // alert(num)
        //============max  min=========================
        /* alert(Math.max(1,2));// 2
        alert(Math.min(1,2));// 1 */
        //-------------pow--------------------------------
        alert(Math.pow(2,4));// pow 计算参数1 的参数2 次方.
        
abs(x)    返回数的绝对值
exp(x)    返回 e 的指数
floor(x)对数进行下舍入
log(x)    返回数的自然对数(底为e)
max(x,y)    返回 x 和 y 中的最高值
min(x,y)    返回 x 和 y 中的最低值
pow(x,y)    返回 x 的 y 次幂
random()    返回 0 ~ 1 之间的随机数
round(x)    把数四舍五入为最接近的整数
sin(x)    返回数的正弦
sqrt(x)    返回数的平方根
tan(x)    返回角的正切

七.Function对象
见 JS函数部分.一

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值