Js对象和基本包装类型

Js对象和基本包装类型

Object类型

创建Object类型有两种。一种是使用new运算符,一种是字面量表示法。
1.使用new运算符创建Object

var box = new Object(); //new方式
box.name = '东方锐智'; //创建属性字段
box.age = 28; //创建属性字段

2.new关键字可以省略

var box = Object(); //省略了new关键字

3.使用字面量方式创建Object

var box = {            //字面量方式
name : '东方锐智', //创建属性字段
age : 28
};

4.如果属性是纯数值的方式:

var box = {
       'name': '东方锐智', //也可以用字符串形式
       'age': 28
   };
   box = {
       0: "hello0"
   };
   // box.name
   box["0"]

使用字面量及传统复制方式

var box = { }; //字面量方式声明空的对象
box.name = '东方锐智'; //点符号给属性复制
box.age = 28;

两种属性输出方式

alert(box.age); /          示法输出,注意引号

给对象创建方法

var box = {
run : function () { //对象中的方法
return '运行';
}
}

alert(box.run()); //调用对象中的方法

使用delete删除对象属性(了解)

delete box.name; //删除属性

在实际开发过程中,一般我们更加喜欢字面量的声明方式。因为它清晰(语义化清晰),语法代码少,而且还给人一种封装的感觉。字面量也是向函数传递大量可选参数的首选方式(重点)。

function box(obj) { //参数是一个对象
if (obj.name != undefined) alert(obj.name); //判断属性是否存在
if (obj.age != undefined) alert(obj.age);
}



box({ //调用函数传递一个对象
name : '东方',
age : 28,
nickname:”昵称”,
info1:”用户信息1”
});

建议:回去敲,敲!

Date类型

Date对象方法

Date对象方法

方法 描述
Date() 返回当日的日期和时间。
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。

创建一个时间对象

创建一个日期对象,使用new运算符和Date构造方法(构造函数)即可。

var box = new Date();//创建一个日期对象

在调用Date构造方法而不传递参数的情况下,新建的对象自动获取当前的时间和日期。

alert(box);//不同浏览器显示不同

通用的方法:Date.parse()

语法:Date.parse(datestring)
返回值:指定的日期和时间据 1970/1/1 午夜(GMT 时间)之间的毫秒数。
默认通常接收的日期格式如下:
1.‘月/日/年’,如6/13/2011;
2.‘英文月名 日, 年’,如 May 25, 2004;
3.‘英文星期几 英文月名 日 年 时:分:秒 时区’,如 Tue May 25 2004 00:00:00 GMT-070
4.‘年/月/日’,如’2018/03/12’

console.log(Date.parse("2017/03/19"));
console.log(Date.parse("3/19/2017"));
console.log(Date.parse("2017-03-19 00:00:00"));

如果Date.parse()没有传入或者不是标准的日期格式,那么就会返回NaN。

alert(Date.parse()); //NaN

如果想输出指定的日期,那么把Date.parse()传入Date构造方法里。

var box = new Date(Date.parse('6/13/2011 13:30:22'));//Mon Jun 13 2011 00:00:00 GMT+0800
var box = new Date('6/13/2011 13:30:22');  //直接传入,Date.parse()后台被调用

注解:Date对象及其在不同浏览器中的实现有许多奇怪的行为。其中有一种倾向是将超出的范围的值替换成当前的值,以便生成输出。例如,在解析“January 32, 2007”时,有的浏览器会讲其解释为“February 1, 2007”。而Opera则倾向与插入当前月份的当前日期。

通用的方法:Date.UTC()

语法:Date.UTC(year,month,day,hours,minutes,seconds,ms)
参数 描述
year 必需。表示年份的四位数字。
month 必需。表示月份的整数,介于 0 ~ 11。
day 必需。表示日期的整数,介于 1 ~ 31。
hours 可选。表示小时的整数,介于 0 ~ 23。
minutes 可选。表示分钟的整数,介于 0 ~ 59。
seconds 可选。表示秒的整数,介于 0 ~ 59。
ms 可选。表示毫秒的整数,介于 0 ~ 999。
返回值:返回指定的时间距 GMT 时间 1970 年 1 月 1 日午夜的毫秒数。
GMT:世界时UT即格林尼治平太阳时间
Date.UTC()方法同样也返回表示日期的毫秒数,但它与Date.parse()在构建值时使用不同的信息。(年份,基于0的月份[0表示1月,1表示2月],月中的哪一天[1-31],小时数[0-23],分钟,秒以及毫秒)。只有前两个参数是必须的。如果没有提供月数,则天数为1;如果省略其他参数,则统统为0.

alert(Date.UTC(2011,11)); //1322697600000

如果Date.UTC()参数传递错误,那么就会出现负值或者NaN等非法信息。
alert(Date.UTC()); //负值或者NaN

如果要输出指定日期,那么直接把Date.UTC()传入Date构造方法里即可。

var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16));
toLocaleString()、toString()和valueOf()

案例:
var a = new Date();
console.log(a.valueOf());//1525597236970
console.log(a.toString());//Sun May 06 2018 17:00:36 GMT+0800 (中国标准时间)
console.log(Date.parse(a));//1525597236000
 
var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16));
alert('toString:' + box.toString());
alert('toLocaleString:' + box.toLocaleString()); //按本地格式输出
 
valueOf()
案例1:
var a = new Date();
console.log(a.valueOf());
console.log(Date.parse(a));
 
案例2:
var a = new Date('2017-03-19 00:00:00');
console.log(a.valueOf());
console.log(Date.parse(a));
总结:从以上的案例可以看出valueOf()和 Date.parse()的区别!

日期格式化方法

Date类型还有一些专门用于将日期格式化为字符串的方法。

var box = new Date();
alert(box.toDateString()); //以特定的格式显示星期几、月、日和年:Sun May 06 2018
alert(box.toTimeString()); //以特定的格式显示时、分、秒和时区:14:00:29 GMT+0800 (中国标准时间)
alert(box.toLocaleDateString()); //以特定地区格式显示星期几、月、日和年:2018/5/6
alert(box.toLocaleTimeString()); //以特定地区格式显示时、分、秒和时区:下午2:00:29
alert(box.toUTCString()); //以特定的格式显示完整的UTC日期。:Sun, 06 May 2018 06:00:29 GMT

组件方法(重点)

alert(box.getTime()); //获取日期的毫秒数,和valueOf()返回一致
alert(box.setTime(100)); //以毫秒数设置日期,会改变整个日期
 
alert(box.getFullYear()); //获取四位年份
alert(box.setFullYear(2012)); //设置四位年份,返回的是毫秒数
 
alert(box.getMonth()); //获取月份,没指定月份,从0开始算起
alert(box.setMonth(11)); //设置月份
 
alert(box.getDate()); //获取日期
alert(box.setDate(8)); //设置日期,返回毫秒数
 
alert(box.getDay()); //返回星期几,0表示星期日,6表示星期六
alert(box.setDay(2)); //设置星期几
 
alert(box.getHours()); //返回时
alert(box.setHours(12)); //设置时
 
alert(box.getMinutes()); //返回分钟
alert(box.setMinutes(22)); //设置分钟
 
alert(box.getSeconds()); //返回秒数
alert(box.setSeconds(44)); //设置秒数
 
alert(box.getMilliseconds()); //返回毫秒数
alert(box.setMilliseconds()); //设置毫秒数

案例在页面上显示变化的时间:

function initDate() {
            var nDate = new Date();
            var dateObj = {
                year: nDate.getFullYear(),
                month: nDate.getMonth() + 1,
                day: nDate.getDate(),
                hours: nDate.getHours(),
                min: nDate.getMinutes(),
                seconds: nDate.getSeconds()
            };
            var dateStr = dateObj.year + "年 " + dateObj.month + "月 " + dateObj.day + "日  ---  " + dateObj.hours + "时 " + dateObj.min + "分 " + dateObj.seconds + "秒";
            // document.write(dateStr);
            document.body.innerHTML = dateStr;
        }
        initDate();
 
        //定时器
        setInterval(function () {
            initDate();
        }, 1000);

扩展知识点
案例:计算平年和闰年
/*

  • @判断闰年 @参数:year

  • @return true:闰年;false:平年
    */

    function isLeapYear(year) {
    if (year % 4 == 0 && year % 100 != 0) {
    return true;
    } else {
    if (year % 400 == 0) {
    return true;
    } else {
    return false;
    }
    }
    }

案例:判断某天是第几周
/*

  • 通过时间戳获取当天是第几周

  • @param {any} paramName

  • @returns
    */

    function getWeekStr(timeStr) {
    var d = new Date(timeStr);
    var week;
    switch (d.getDay()) {
    case 1:
    week = “星期一”;
    break;
    case 2:
    week = “星期二”;
    break;
    case 3:
    week = “星期三”;
    break;
    case 4:
    week = “星期四”;
    break;
    case 5:
    week = “星期五”;
    break;
    case 6:
    week = “星期六”;
    break;
    default:
    week
    = “星期天”;
    }
    return week;
    }

案例:两个时间比较大小
/*
* 比较时间大小
* startTime{String} 开始时间
* endTime{String} 结束时间
* return{Boolean} true:开始时间比结束时间大,否则:小
*/

function compareDate(startTime, endTime) {
var beginTimes = startTime.replace(/-/g, “/”);
var endTimes = endTime.replace(/-/g, “/”);
var a = (Date.parse(endTimes) - Date.parse(beginTimes));
// (new Date(startTime)).getTime
if (a < 0) {
return true;
}
return false;
}
//2018-01-03 13:11:00
console.log(compareDate(“2018-01-03 13:11:00”, ‘2018-03-06 13:11:00’));

案例:根据用户输入的日期,获取指定前几天或者后几天的日期
/*
* 根据用户输入的日期,获取指定前几天或者后几天的日期
* pDate{String | Number}:时间格式化字符串 | 时间戳(毫秒数)
* customerDay{int},天数: 前几天:-day, 后几天:day
* return {Date} 时间对象
*/

function getDateByCustomerDay(pDate, customerDay) {
var a = new Date(pDate);
a = a.valueOf();//等价于a.getTime()
a = a + customerDay * 24 * 60 * 60 * 1000;
a = new Date(a);
return a;
}

var nDate = new Date();
console.log(getDateByCustomerDay(nDate, -3));//前3天的日期
console.log(getDateByCustomerDay(nDate, 3));//前3天的日期

基本包装类型

为了便于操作“基本类型值”,JS 提供了 三个 特殊的引用类型:Boolean、Number、String。这些类型和其他引用类型相似,但同时 也具备 与各自基本类型相应的特殊行为。 实际上:每当读取一个基本类型值的时候, “后台就会创建一个 对应的基本包装类型的对象”,从而能够调用一些方法来操作这些数据。

基本包装类型概述

var box = 'Mr. Lee'; //定义一个字符串
var box2 = box.substring(2); //截掉字符串前两位
alert(box2); //输出新字符串

变量box是一个字符串类型,而box.substring(2)又说明它是一个对象(注解:只有对象才会调用方法),最后把处理结果赋值给box2。'Mr. Lee’是一个字符串类型的值,按道理它不应该是对象,不应该会有自己的方法,比如:
alert(‘Mr. Lee’.substring(2)); //直接通过值来调用方法

1.字面量写法:

var box = 'Mr. Lee'; //字面量
box.name = 'Lee'; //无效属性
box.age = function () { //无效方法
return 100;
};
alert(box); //Mr. Lee
alert(box.substring(2)); //. Lee
alert(typeof box); //string
alert(box.name); //undefined
alert(box.age()); //错误

2.new运算符写法:

var box = new String('Mr. Lee'); //new运算符
box.name = 'Lee'; //有效属性
box.age = function () { //有效方法
return 100;
};
alert(box); //Mr. Lee
alert(box.substring(2)); //. Lee
alert(typeof box); //object
alert(box.name); //Lee
alert(box.age()); //100

以上字面量声明和new运算符声明很好的展示了他们之间的区别。但有一定还是可以肯定的,那就是不管字面量形式还是new运算符形式,都可以使用它的内置方法。并且Boolean和Number特性与String相同,三种类型可以成为基本包装类型。
注解:在使用new运算符创建以上三种类型的对象时,可以给自己添加属性和方法,但我们建议不要这样使用,因为这样会导致根本分不清到底是基本类型值还是引用类型值。

Boolean类型

Boolean类型没有特定的属性或者方法。

Number类型

Number类型有一些静态属性(直接通过Number调用的属性,而无须new运算符)和方法。

Number静态属性

属 性 描述
MAX_VALUE 表示最大数
MIN_VALUE 表示最小值
NaN 非数值
NEGATIVE_INFINITY 负无穷大,溢出返回该值
POSITIVE_INFINITY 无穷大,溢出返回该值
prototype 原型,用于增加新属性和方法

Number对象的方法

方 法 描述
toString() 将数值转化为字符串,并且可以转换进制
toLocaleString() 根据本地数字格式转换为字符串
toFixed() 将数字保留小数点后指定位数并转化为字符串
toExponential() 将数字以指数形式表示,保留小数点后指定位数并转化为字符串
toPrecision() 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串

var box = 1000.789;
alert(box.toString()); //转换为字符串,传参可以转换进制
alert(box.toLocaleString()); //本地形式,1,000.789
alert(box.toFixed(2)); //小数点保留,1000.78
alert(box.toExponential()); //指数形式,传参会保留小数点
alert(box.toPrecision(3)); //指数或点形式,传参保留小数点

String类型(重点)

String对象属性

属 性 描述
length 返回字符串的字符长度

toString方法详解

toString()方法可以把值转换成字符串。

var box = 11;
var box = true;
alert(typeof box.toString());

toString()方法一般是不需要传参的,但在数值转成字符串的时候,可以传递进制参数。

var box = 10;
alert(box.toString()); //10,默认输出
alert(box.toString(2)); //1010,二进制输出
alert(box.toString(8)); //12,八进制输出
alert(box.toString(10)); //10,十进制输出
alert(box.toString(16)); //a,十六进制输出

注意:如果在转型之前不知道变量是否是null或者undefined的情况下,我们还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。

var box = null;
alert(String(box));

注解:如果值有toString()方法,则调用该方法并返回相应的结果;如果是null或者undefined,则返回"null"或者"undeinfed"。

字符方法

方 法 描述

charAt(n) //返回指定索引位置的字符(索引从0开始)
charCodeAt(n)// 以Unicode编码形式返回指定索引位置的字符
 
var box = 'Mr.Lee';
alert(box.charAt(1)); //r
alert(box.charCodeAt(1)); //114
alert(box[1]); //r,通过数组方式截取

注解:box[1]在IE浏览器会显示undefined,所以使用时要慎重。

字符串操作方法(重点)

方 法 描述
concat(str1…str2) 将字符串参数串联到调用该方法的字符串
slice(n,m) 返回字符串n到m之间位置的字符串
substring(n,m) 同上
substr(n,m) 返回字符串n开始的m个字符串(m:截取的长度)

var box = 'Mr.Lee';
alert(box.concat(' is ', ' Teacher ', '!'));//Mr.Lee is Teacher !
alert(box.slice(3)); //Lee
alert(box.slice(3,5)); //Le
alert(box.substring(3)); //Lee
alert(box.substring(3,5)); //Le
alert(box.substr(3)); //Lee
alert(box.substr(3,5)); //Lee
 
var box = 'Mr.Lee';
alert(box.slice(-3)); //Lee,6+(-3)=3位开始
alert(box.substring(-3)); //Mr.Lee 负数返回全部
alert(box.substr(-3)); //Lee,6+(-3)=3位开始
 
var box = 'Mr.Lee';
alert(box.slice(3, -1)); //Le 6+(-1)=5, (3,5)
alert(box.substring(3, -1));     //Mr. 第二参为负,直接转0,
//并且方法会把较小的数字提前,(0,3)
alert(box.substr(3, -1)); //'' 第二参数为负,直接转0 ,(3,0)

字符串位置方法

方 法 描述
indexOf(str, n) 从n开始搜索的第一个str,并将搜索的索引值返回
lastIndexOf(str, n) 从n开始搜索的最后一个str,并将搜索的索引值返回

var box = 'Mr.Lee is Lee';
alert(box.indexOf('L')); //3
alert(box.indexOf('L', 5)); //10
alert(box.lastIndexOf('L')); //10
alert(box.lastIndexOf('L', 5)); //3,从指定的位置向前搜索

注解:如果没有找到想要的字符串,则返回-1。

编程示例:找出全部的L

var box = 'Mr.Lee is Lee'; //包含两个L的字符串
var boxarr = []; //存放L位置的数组
var pos = box.indexOf('L'); //先获取第一个L的位置
while (pos > -1) { //如果位置大于-1,说明还存在L
boxarr.push(pos); //添加到数组
pos = box.indexOf('L', pos + 1); //从新赋值pos目前的位置
}
alert(boxarr); //输出

大小写转换方法

方 法 描述
toLowerCase(str) 将字符串全部转换为小写
toUpperCase(str) 将字符串全部转换为大写
toLocaleLowerCase(str) 将字符串全部转换为小写,并且本地化
toLocaleupperCase(str) 将字符串全部转换为大写,并且本地化

var box = 'Mr.Lee is Lee';
alert(box.toLowerCase()); //全部小写
alert(box.toUpperCase()); //全部大写
alert(box.toLocaleLowerCase()); //
alert(box.toLocaleUpperCase()); //

字符串的模式匹配方法(重点)

方 法 描述
match(pattern) 返回pattern 中的子串或null
replace(pattern, replacement) 用replacement 替换pattern
search(pattern) 返回字符串中pattern 开始位置
split(pattern) 返回字符串按指定pattern 拆分的数组

正则表达式在字符串中的应用,我们在后面去详细介绍。以上中match()、replace()、serach()、split()在普通字符串中也可以使用。

var box = 'Mr.Lee is Lee';
alert(box.match('L')); //找到L,返回L否则返回null
alert(box.search('L')); //找到L的位置,和indexOf类型
alert(box.replace('L', 'Q')); //把L替换成Q
alert(box.split(' ')); //以空格分割成字符串

其他方法
方 法 描述
fromCharCode(ascii) 静态方法,输出Ascii码对应值
localeCompare(str1,str2) 比较两个字符串,并返回相应的值

alert(String.fromCharCode(76)); //L,输出Ascii码对应值
**localeCompare(str1,str2)**方法详解:比较两个字符串并返回以下值中的一个;
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数。(多数-1)
2.如果字符串等于字符串参数,则返回0。
3.如果字符串在自附表中应该排在字符串参数之后,则返回一个正数。(多数1)

var box = 'Lee';
alert(box.localeCompare('apple')); //1
alert(box.localeCompare('Lee')); //0
alert(box.localeCompare('zoo')); //-1

重点部分

Number静态属性

属 性 描述
MAX_VALUE 表示最大数
MIN_VALUE 表示最小值
NaN 非数值
NEGATIVE_INFINITY 负无穷大,溢出返回该值
POSITIVE_INFINITY 无穷大,溢出返回该值
prototype 原型,用于增加新属性和方法

Number对象的方法

方 法 描述
toString() 将数值转化为字符串,并且可以转换进制
toLocaleString() 根据本地数字格式转换为字符串
toFixed() 将数字保留小数点后指定位数并转化为字符串
toExponential() 将数字以指数形式表示,保留小数点后指定位数并转化为字符串
toPrecision() 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串
String对象属性
属 性 描述
length 返回字符串的字符长度

toString方法详解

toString()方法可以把值转换成字符串。
var box = 11;
var box = true;
alert(typeof box.toString());

toString()方法一般是不需要传参的,但在数值转成字符串的时候,可以传递进制参数。
var box = 10;
alert(box.toString()); //10,默认输出
alert(box.toString(2)); //1010,二进制输出
alert(box.toString(8)); //12,八进制输出
alert(box.toString(10)); //10,十进制输出
alert(box.toString(16)); //a,十六进制输出

注意:如果在转型之前不知道变量是否是null或者undefined的情况下,我们还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。
var box = null;
alert(String(box));

注解:如果值有toString()方法,则调用该方法并返回相应的结果;如果是null或者undefined,则返回"null"或者"undeinfed"。

字符方法

方 法 描述
charAt(n) 返回指定索引位置的字符(索引从0开始)
charCodeAt(n) 以Unicode编码形式返回指定索引位置的字符

var box = ‘Mr.Lee’;
alert(box.charAt(1)); //r
alert(box.charCodeAt(1)); //114
alert(box[1]); //r,通过数组方式截取

注解:box[1]在IE浏览器会显示undefined,所以使用时要慎重。

字符串操作方法(重点)

方 法 描述
concat(str1…str2) 将字符串参数串联到调用该方法的字符串
slice(n,m) 返回字符串n到m之间位置的字符串
substring(n,m) 同上
substr(n,m) 返回字符串n开始的m个字符串(m:截取的长度)

var box = ‘Mr.Lee’;
alert(box.concat(’ is ', ’ Teacher ', ‘!’));//Mr.Lee is Teacher !
alert(box.slice(3)); //Lee
alert(box.slice(3,5)); //Le
alert(box.substring(3)); //Lee
alert(box.substring(3,5)); //Le
alert(box.substr(3)); //Lee
alert(box.substr(3,5)); //Lee

var box = ‘Mr.Lee’;
alert(box.slice(-3)); //Lee,6+(-3)=3位开始
alert(box.substring(-3)); //Mr.Lee 负数返回全部
alert(box.substr(-3)); //Lee,6+(-3)=3位开始

var box = ‘Mr.Lee’;
alert(box.slice(3, -1)); //Le 6+(-1)=5, (3,5)
alert(box.substring(3, -1)); //Mr. 第二参为负,直接转0,
//并且方法会把较小的数字提前,(0,3)
alert(box.substr(3, -1)); //’’ 第二参数为负,直接转0 ,(3,0)

字符串位置方法

方 法 描述
indexOf(str, n) 从n开始搜索的第一个str,并将搜索的索引值返回
lastIndexOf(str, n) 从n开始搜索的最后一个str,并将搜索的索引值返回

var box = ‘Mr.Lee is Lee’;
alert(box.indexOf(‘L’)); //3
alert(box.indexOf(‘L’, 5)); //10
alert(box.lastIndexOf(‘L’)); //10
alert(box.lastIndexOf(‘L’, 5)); //3,从指定的位置向前搜索

注解:如果没有找到想要的字符串,则返回-1。

编程示例:找出全部的L
var box = ‘Mr.Lee is Lee’; //包含两个L的字符串
var boxarr = []; //存放L位置的数组
var pos = box.indexOf(‘L’); //先获取第一个L的位置
while (pos > -1) { //如果位置大于-1,说明还存在L
boxarr.push(pos); //添加到数组
pos = box.indexOf(‘L’, pos + 1); //从新赋值pos目前的位置
}
alert(boxarr); //输出

大小写转换方法

方 法 描述
toLowerCase(str) 将字符串全部转换为小写
toUpperCase(str) 将字符串全部转换为大写
toLocaleLowerCase(str) 将字符串全部转换为小写,并且本地化
toLocaleupperCase(str) 将字符串全部转换为大写,并且本地化

var box = ‘Mr.Lee is Lee’;
alert(box.toLowerCase()); //全部小写
alert(box.toUpperCase()); //全部大写
alert(box.toLocaleLowerCase()); //
alert(box.toLocaleUpperCase()); //

字符串的模式匹配方法(重点)

方 法 描述
match(pattern) 返回pattern 中的子串或null
replace(pattern, replacement) 用replacement 替换pattern
search(pattern) 返回字符串中pattern 开始位置
split(pattern) 返回字符串按指定pattern 拆分的数组

正则表达式在字符串中的应用,我们在后面去详细介绍。以上中match()、replace()、serach()、split()在普通字符串中也可以使用。

var box = ‘Mr.Lee is Lee’;
alert(box.match(‘L’)); //找到L,返回L否则返回null
alert(box.search(‘L’)); //找到L的位置,和indexOf类型
alert(box.replace(‘L’, ‘Q’)); //把L替换成Q
alert(box.split(’ ')); //以空格分割成字符串

其他方法

方 法 描述
fromCharCode(ascii) 静态方法,输出Ascii码对应值
localeCompare(str1,str2) 比较两个字符串,并返回相应的值

alert(String.fromCharCode(76)); //L,输出Ascii码对应值
localeCompare(str1,str2)方法详解:比较两个字符串并返回以下值中的一个;
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数。(多数-1)
2.如果字符串等于字符串参数,则返回0。
3.如果字符串在自附表中应该排在字符串参数之后,则返回一个正数。(多数1)

var box = ‘Lee’;
alert(box.localeCompare(‘apple’)); //1
alert(box.localeCompare(‘Lee’)); //0
alert(box.localeCompare(‘zoo’)); //-1

猜你喜欢

转载自blog.csdn.net/knowledge_bird/article/details/87901130