~本特利~ |
1.内置对象
1.1 String对象
- 回顾字符型数据的创建:利用一对单引号或双引号。
- 字符型数据为什么能像对象一样使用呢?
这是因为这些对象实际上是构造函数String的实例,即String对象。
String对象提供了一些用于对字符串进行处理的属性和方法。
注意:对字符串进行操作时,处理结果是通过方法的返回值直接返回的,并不会改变String对象本身保存的字符串内容。在这些方法的参数中,位置是一个索引值,从0开始计算,第一个字符的索引值是0,最后一个字符的索引值是字符串的长度减1。
<script>
var str = 'HelloWorld';
str.length; // 获取字符串长度,返回结果:10
str.charAt(5); // 获取索引位置为5的字符,返回结果:W
str.indexOf('o'); // 获取“o”在字符串中首次出现的位置,返回结果:4
str.lastIndexOf('o'); // 获取“o”在字符串中最后出现的位置,返回结果:6
str.substring(5); // 截取从位置5开始到最后的内容,返回结果:World
str.substring(5, 7); // 截取从位置5开始到位置7范围内的内容,返回结果:Wo
str.substr(5); // 截取从位置5开始到最后的内容,返回结果:World
str.substr(5, 2); // 截取从位置5开始的后面2个字符,返回结果:Wo
str.toLowerCase(); // 将字符串转换为小写,返回结果:helloworld
str.toUpperCase(); // 将字符串转换为大写,返回结果:HELLOWORLD
str.split('l'); // 使用“l”切割字符串,返回结果:["He", "", "oWor", "d"]
str.split('l', 3); // 限制最多切割3次,返回结果:["He", "", "oWor"]
str.replace('World', 'JavaScript'); // 替换字符串,返回结果:"HelloJavaScript"
</script>
在实际开发中,许多功能的实现都离不开String对象提供的属性和方法。例如,在开发用户注册和登录功能时,要求用户名长度在3~10范围内,不允许出现敏感词admin,实现代码如下。
<script>
var name = 'Administrator';
if (name.length < 3 || name.length > 10) {
alert('用户名长度必须在3~10之间。');
}
if (name.toLowerCase().indexOf('admin') !== -1) {
alert('用户名中不能包含敏感词:admin。');
}
</script>
上述代码通过判断length 属性来验证用户名长度;通过将用户名转换为小写后查找里面是否包含敏感词admin。实现时name先转换为小写后再进行查找,可以使用户名无论使用哪种大小写组合,都能检查出来。indexOf()方法在查找失败时会返回-1,因此判断该方法的返回值即可知道用户名中是否包含敏感词。
1.2 Number对象
Number对象用于处理整数、浮点数等数值,常用的属性和方法如下。
<script>
var num = 12345.6789;
num.toFixed(); // 四舍五入,不包括小数部分,返回结果:12346
num.toFixed(1); // 四舍五入,保留1位小数,返回结果:12345.7
num.toFixed(6); // 用0填充不足的小数位,返回结果:12345.678900
Number.MAX_VALUE; // 获取最大值,返回结果:1.7976931348623157e+308
Number.MIN_VALUE; // 获取最小正值,返回结果:5e-324
</script>
在上述示例中,MAX_VALUE 和 MIN_VALUE是直接通过构造函数Number进行访问的,而不是使用Number 的实例对象进行访问,这是因为这两个属性是 Number的静态成员。关于静态成员的概念和定义方式具体后面的小节中详解。
1.3 Math对象
Math对象用于对数值进行数学运算,与其他对象不同的是,该对象不是一个构造函数,不需要实例化就能使用。
<script>
var num = 10.88;
Math.ceil(num); // 向上取整,返回结果:11
Math.round(num); // 四舍五入,返回结果:11
Math.random(); // 获取随机数,返回结果:0.3938305016297685(每次结果不同)
Math.abs(-25); // 获取绝对值,返回结果:25
Math.abs('-25'); // 获取绝对值,返回结果:25
Math.max(5, 7, 9, 8); // 获取最大值,返回结果:9
Math.min(6, 2, 5, 3); // 获取最小值,返回结果:2
</script>
利用Math.random()还可以获取指定范围内的随机数,公式为Math.random() * (n - m) + m,表示生成大于或等于m且小于n的随机值,示例代码如下。
<script>
Math.random() * (3 - 1) + 1; // 1 <= 返回结果 < 3
Math.random() * (20 - 10) + 10; // 20 <= 返回结果 < 20
Math.random() * (99 - 88) + 88; // 88 <= 返回结果 < 99
</script>
上述代码的返回结果是浮点数,当需要获取整数结果时,,可以搭配Math.floor()来实现。下面通过代码演示如何获取13范围内的随机整数,返回结果可能是12或3.
<script>
function randomNum(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
console.log(randomNum(1, 3)); // 最小值1,最大值3
</script>
1.4 Date对象
Date对象用于处理日期和时间。
示例1:根据Date对象获取时间日期。
<script>
var date = new Date(); // 基于当前时间创建Date对象
date.toString(); // 示例结果:Fri Oct 06 2017 11:53:04 GMT+0800 (中国标准时间)
date.getFullYear(); // 示例结果:2017
date.getMonth(); // 示例结果:9
date.getDate(); // 示例结果:6
</script>
示例2:根据Date对象指定一个日期。
在上述代码中,toString()方法用来方便地查看对象保存的时间信息。
在使用Date对象时,还可以在创建的时候传入参数来指定一个日期,具体示例如下。
<script>
// 方式1:分别传入年、月、日、时、分、秒(月的范围是0~11,即真实月份-1)
var date1 = new Date(2017, 9, 1, 11, 53, 4);
date1.toString(); // 返回结果:Sun Oct 01 2017 11:53:04 GMT+0800 (中国标准时间)
// 方式2:通过字符串传入日期和时间
var date2 = new Date('2017-10-01 11:53:04');
date2.toString(); // 返回结果:Sun Oct 01 2017 11:53:04 GMT+0800 (中国标准时间)
</script>
示例3:处理设置的日期不合理的情况,如将月份设为-1表示去年12月,月份为12
表示明年1月。
在使用方式1时,最少需要指定年、月两个参数,后面的参数在省略时会自动使用默认值;使用方式2时,最少需要指定年份。另外,当传入的数值大于合理范围时,会自动转换成相邻数值(如方式1将月份设为-1表示去年12月,月份为12表示明年1月)。下面通过具体代码进行演示。
<script>
new Date('2017'); // Sun Jan 01 2017 08:00:00 GMT+0800 (中国标准时间)
new Date(2017, 9); // Sun Oct 01 2017 00:00:00 GMT+0800 (中国标准时间)
new Date(2017, -1); // Thu Dec 01 2016 00:00:00 GMT+0800 (中国标准时间)
new Date(2017, 12); // Mon Jan 01 2018 00:00:00 GMT+0800 (中国标准时间)
new Date(2017, 0, 0); // Sat Dec 31 2016 00:00:00 GMT+0800 (中国标准时间)
</script>