JS学习-js内置对象
其实,说到js内置对象其实就是js本身给我们提供的基础对象,它们和我们自己创建的对象其实是一样的,有属性,有方法。我理解的(非常欢迎大神们纠正),这主要还是一种对基本数据类型处理的规范化目的(毕竟,例如每个人都写一个toString()方法,既麻烦,也不能保证每个人写的不出错),当然,这其中也肯定有对外暴露编译环境(前端是浏览器内核)的接口,例如,如果不给Date对象,让我写出js用其他方式获取本机时间……额,目前我做不到(如果有方法,希望大神留言),附上一段计算机原理回答。
js的基本数据类型。
5大基本数据类型undefined、null、Number、String、Boolean。
Object、Array、Function属于引用类型。
判断方式,常用的是typeof
,毕竟就我目前才一年的经验来说,许多框架源码中能看到大量此判断方式。但是!如下代码:
typeof undefined // undefined
typeof null //object
typeof String // string
typeof Number // number
typeof Boolean // Boolean
这里会发现个问题,typeof null
并没有像理想中那样返回null,而是object,这样就会存在一种误判,因此我们可以使用另一种方法判断,Object.prototype.toString.call(null)
,这样,返回的就是'object null'
。
js内置对象
11种+其他1
对象名称 | 对象说明 |
---|---|
Object | 基础对象 |
Boolean | 布尔对象 |
String | 字符串对象 |
Number | 数值对象 |
Date | 时间戳对象 |
Array | 数组对象 |
Math | 数学对象 |
Error | 异常对象 |
Argument | 函数参数集合对象 |
RegExp | 正则表达式对象 |
Function | 函数构造器对象 |
这里我主要归纳Date、Math、String、Array、Event和RegExp对象,剩下的我建议去本文底部脚标注释1的博客,上面有很详细的讲解。
1. Date对象
Date对象是js内置时间对象,用于获取本地时间,使用前需要利用new来声明一个新的对象实体。即:
var now = new Date();
Date对象提供了以下3类方法:
● 从系统中获得当前的时间和日期
var now = new Date();
var nowdate = now.getFullYear() + '-' + (now.getMonth()+1) + '-' + now.getDate(); //年-月-日
这里有几个注意的地方:
1. getYear()2会返回的并不是2017,而是117,因为ECMAScript v3 开始就使用getFullYear()替代。
2. getMonth()返回的并不是正常的1-12月,而是0-11,因此转化成正常时间需要加1。如果需要更美化的显示01-09,可以进行月份判断后添加字符串“0”。
其余比较常用的还有:
getDay() //获取星期几
getHours() //获取小时数
getMinutes() //获取分钟数
getSeconds() //获取秒数
getMilliseconds() //返回毫秒
● 设置当前的日期和时间
setYear(yearInt) //设置年份,同getYear()一样不是完整的年份
setFullYear(yearInt) //设置年份
setMonth(monthInt) //设置月份
setDate(dateInt) //设置日
setHours(hourInt) //设置小时数
setMinutes(minInt) //设置分钟数
setSeconds(secInt) //设置秒数
setMilliseconds(milliInt) //设置毫秒
● 在时间、日期同字符串之间完成转换 (只需了解)
2. Math对象
常用的Math方法
- abs(x) 返回数字的绝对值
- max(x,y) 返回 x 和 y 之间较大的数
- min(x,y) 返回 x 和 y 之间较小的数
- ceil(x) 向上取整
- floor(x) 向下取整
- round(x) 四舍五入后取整
- random() 返回位于 0 到 1 之间的随机函数
- sqrt(x) 返回数字的平方根
不是很常用的Math方法
- acos(x) 返回数字的反余弦值
- asin(x) 返回数字的反正弦值
- atan(x) 返回位于-PI/2 和 PI/2 的反正切值
- atan2(y,x) 返回(x,y)位于 -PI 到 PI 之间的角度
- cos(x) 返回一个数字的余弦值
- exp(x) 返回 E^x 值
- log(x) 返回底数为E的自然对数
- pow(x,y) 返回 y^x 的值
- sin(x) 返回数字的正弦值
- tan(x) 返回一个角度的正切值
- toSource() 显示对象的源代码
- valueOf() 返回数学对象的原始值
使用方法:
//例:创建两个0-9的随机数,并返回较大的那个
var m1 = Math.round(Math.random()*10);
var m2 = Math.round(Math.random()*10);
var rest = Math.max(m1,m2);
3. String对象
● split(c),将字符串转化为数组,以参数c为分隔。
● substr(start,length),切割字符串返回,参数为起始位置和切割长度。
● substring(start,end),切割字符串返回,注意同上区别,参数为起止位置。
● indexOf(),返回参数字符串在检索字符串中的起始位置,如果没有则返回-1。注意:由于返回位置可以为0,因此不能直接作为判断条件,应判断 >-1,才能判断是否存在在检索字符串中。
● match(),通过正则来查找是否存在,如果没有则返回null。
● test(),作用基本同上,返回true或false。
● search(),执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。
● slice(),取出字符串中的一段字符串。
● concat(),在字符串后接一段字符串。
● length(),返回字符串长度。
● toLowerCase(),将字符串全部转化为小写后返回。
● toUpperCase(),将字符串全部转化为大写后返回。
● trim(),去除字符串前后的空格。
4. Array对象
数组相关方法:
● Array(),初始化声明一个数组。
● pop(),删除数组最后一个元素,并返回该元素。
● push(),向数组中插入一条新数据。
● sort(func(m,n)),数组排序,没有参数时则按照数组中元素的字符编码(取第一字符ASCII值进行比较)进行升序排序,可以通过编写参数func(m,n),m为当前第i个元素,n为第i+1个元素,若m大于n,则返回大于0的值,若m小于n,则返回小于0数,相等则返回0。(可利用这个函数自定义排序,如对象数组根据对象属性排序)
● reserve(func(m,n)),颠倒数组的顺序,反过来排序,会改变原数组,不会创建新数组。
● concat(),将两个数组融合成一个新的数组,不影响原数组。
● join(c),将数组元素列出,并用参数c连接。
● slice(),取出数组片段,返回新数组,如取出第1到第10个元素生成新数组。
● splice(),删除数组某个、某段特定元素。注:如果使用delete arr[i],会只删除数组中该元素的值,并不会删除位置,删除后arr[i] = undefined,而splice是直接删除该元素。也可用于在数组中添加元素,splice(index,0,new),在位置i开始删除长度为0的数组元素,并添加新元素new。
● map(func(value,index,arr)),返回一个对原数组每个元素经过参数function方法处理后的数组。
● 不常接触的还有:shift()删除数组第一条数据并返回该数据,unshift()新增一条数据并返回数组长度…
数组迭代器方法:
● forEach(func(v,i,arr)),对每个元素进行func操作,参数和map()等方法一致。
● every(),返回布尔值。接受一个返回值为布尔值的函数作为参数,若每个均为true则返回true,反之为false。
● some(),返回布尔值。接受一个返回值为布尔值的函数作为参数,若其中某个为true,则返回true,全为false则返回false。
● reduce(),reduceRight()
● map(),上面解释过。
● filter(),接受一个返回值为布尔值的函数作为参数。和every()不同的是,filter不是返回true和false,而是将所有为true的元素提出来生成新数组返回。
5. Event对象
6. RegExp对象
(未完待续)
- js内置对象部分内容转自博客:http://www.cnblogs.com/lianzi/archive/2011/08/26/2154253.html ↩
- 注释:由 getYear() 返回的值不总是 4 位的数字!对于介于 1900 与 1999 之间的年份,getYear() 方法仅返回两位数字。对于 1900 之前或 1999 之后的年份,则返回 4 位数字!
注释:该方法总是结合一个 Date 对象来使用。
重要事项:从 ECMAScript v3 开始,JavaScript 的实现就不再使用该方法,而使用 getFullYear() 方法取而代之! ↩