内建对象

内建对象是指由ECMAScript事先提供的、不依赖于宿主环境的对象,这些对象在程序运行之前就已经存在了。可以直接在程序中任何地方任何时候拿来使用。

1. 内建全局单例对象   Global、Math、JSON。

在整个执行环境中只有一个对象实例,这些对象没有内部属性[[Construct]]和[[Call]],所以不能使用new来创建,也不能作为函数来调用,而是直接使用对象名称来引用其属性和方法(对于全局对象,则可以直接使用属性和方法名)。

1.1  常用内建全局单例对象方法

Global对象下的内建方法:

类别 方法 说明
全局解析方法 eval(x)       解析Javascript字符串 eval中定义的变量不会提升,在严格模式下,外部不能访问eval内定义的变量,不推荐使用
String解析 parseInt(str,radix) 将字符串解析为整数,可以传入一个进制,会忽略前导空格
  parseFloat(str) 将字符串解析为浮点数,会忽略前导的空格和前导0,会自动识别第一个小数点
Number判断 isNaN(num) 判断是否不为数字,如果不是则为true,如果是则为false
  isFinite(num) 判断数字范围是否为有限数,即是否在js预定范围内
URL处理办法
encodeURI()


对URI编码,用于整个URI,用特殊的UTF-8编码替换所有无效字符,如冒号,正斜杠,问号,井号等

 
decodeURI()


使用ecnodeURI()编码的字符串解码

 
encodeURIComponent()


对URI编码,用于URI中的某一段,会对发现的任何非标准字符进行解码

 
decodeURIComponent()


对使用ecnodeURIComponent()编码的字符串解码

Math对象下的内建方法:

类别 方法 说明
取整系列 ceil() 向上取整
  round() 四舍五入
  abs() 绝对值
  floor() 向下取整
     
随机方法 random() 介于0和1之间的随机数,不包括0和1,可封装方法返回指定位数,指定范围的随机数
最值方法 max[value1,value2..] 返回最大值
  min[value1,value2..] 返回最小值

JSON对象下的内建方法:

类别 方法 说明
解析 parse(text) 把JSON字符串解析为Javascript类型数据
  stringify(obj,[replacer,[space]]) 把Javascript对象序列为JSON字符串,
默认情况下不包括空格和缩进,所有函数、原型成员以及值为undefined的属性会被忽略

JSON.stringify()可以接受二个可选参数:

  1、第一个可选参数是个过滤器,可以是一个数组,也可以是一个函数。如果是一个数组,那么结果中只保留这个数组中列出的属性;

如果是一个函数,这个函数被称为替换函数,接受两个参数:一个键和一个值。替换函数返回undefined时会忽略这个键,否则就将返回值作为这个键的值插入到相应位置。

  2、第二个可选参数是个选项,表示是否在JSON字符串中保留缩进。如果这个参数是数字,表示每个级别缩进的空格数(最大不能超过10,超过10时自动设置为10),如果这个参数是字符串,则将作为缩进字符处理。

  在调用JSON.stringify(obj)时,如果obj中有toJSON()方法并返回一个有效值时,会首先调用这个方法。

2. 内建对象 

常见内建对象有以下,都可以直接通过new调用构造函数创建对象实例:

Object、Function、Array、String、Number、Boolean、Date、RegExp

Error(EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError)

2.1  Object和Function之前有详细说明

2.2 Array和String 内建对象属性和方法比较,有较多相似之处

对数组中每一项运行执行函数,返回每次调用的结果组成的数组

 
Array


String

长度属性 length length
 
数组项的个数,可修改长度来添加或移除数组项的功能

字符串中字符的个数
     
添加 unshift(new1,new2…)  
  接受任意个参数,并添加到数组前面,返回新数组的长度  
  push(new1,new2…)  
  接受任意个参数,把它们逐个添加到数组末尾,并返回新数组的长度  
     
删除 shift() trim()
  移除数组第一项并返回,修改数组长度 去掉字符串前后的空格
  pop()  
  移除数组最后一项,修改数组长度,返回被移除的项  
     
查找 indexOf() /
lastIndexOf()
indexOf()/lastIndexOf()
 
从数组中查找指定项,返回所在数组的位置,没有找到返回-1,indexOf()从开头向后查找,lastIndexOf()则从末尾向前查找.
在比较项是否相等时,会使用全等比较

第二个可选参数表示从哪个位置开始搜索 ,[可选参数]


从字符串中查找子字符串,返回子字符串的位置,没有找到返回-1,indexOf()从前往后查找,lastIndexOf()从后往前找

第二个可选参数表示从哪个位置开始搜索 ,[可选参数]

     
连接 join() +
  传入一个参数作为分隔符,将数组每一项连接起来,默认为逗号 多个字符串之间连接
  concat() concat()
  创建一个原数组的副本,将传入的参数压入新数组并返 多个字符串之间连接,更多情况是直接使用“+”拼接
     
截取 slice() slice()
 
接受1至2个参数,即要返回项的起始和结束位置

1、只有一个参数时,返回该参数位置开始到末尾的所有项

2、参数为负数时,加上数组长度使其变为正数


接受1至2个参数,即要返回项的起始和最后一个字符后面的位置

1、只有一个参数时,返回该参数位置开始到末尾的所有项

2、参数为负数时,加上数组长度使其变为正数

  splice() substr()                                      参数:开始位置,字符个数
 
1、删除:指定2个参数,要删除的第一项的位置和要删除的项数

2、插入:提供3个参数,起始位置,0,要插入的项

3、替换:提供3个参数,起始位置,删除的项数,要插入的项

substring()           
参数:开始位置,最后一个字符后面的位置
     
     
转换 toLocaleString() toLocaleString() 
  调用数组每一项的toLocaleString(),然后用逗号连接起来 返回对象表示的字符串
  toString() toString()
  调用数组每一项的toString(),然后用逗号连接起来 返回对象表示的字符串
  valueOf() valueOf() 
  返回数组本身,即有array ===
array.valueOf()
返回对象表示的字符串
    toLowerCase()
    转小写
    toUpperCase() 
    转大写
     
比较排序 reverse() localeCompare()
  反转数组项的顺序
对象在参数前返回负数,相等返回0,后面返回正数

  sort()  
  默认按升序排序,可以接受一个比较函数   
     
字符   charAt() /
charCodeAt()
   
1个参数:基于0的字符位置charAt()返回单字符字符串,charCodeAt()返回字符编码

    fromCharCode()
    将接受到的一或多个字符编码转变为字符串
     
匹配   match()
    与RegExp的exec()方法相同,接受一个参数,
要么是一个正则表达式,要么是一个RegExp对象
    search()
    接受一个参数,和match()相同,返回字符串中第一个匹配项的索引,没有找到匹配项时返回-1,
search()始终从字符串开头向后查找
    replace()
    接受两个参数:一个RegExp对象或字符串和一个字符串或函数,若第一个参数为字符串,则只会替换第一个字符串,若想替换所有子字符串,第一个参数必须为指定了全局标志(g)的正则表达式
    split()
    基于指定的分隔符将一个字符串分割成多个字符串,并将结果放在一个数组中返回,分隔符可以是字符串,也可以是正则表达式。可选的第二个参数用于指定数组的最大长度
     
迭代 every()  
  对数组中每一项运行执行函数,每一项都返回true时返回true  
  some()  
  对数组中每一项运行执行函数,如果有其中一项执行函数返回true就返回true  
  forEach()  
  对数组中每一项运行执行函数,没有返回值  
  map()  
  对数组中每一项运行执行函数,返回每次调用的结果组成的数组  
  filter()  
  对数组中的每一项运行执行函数,返回执行函数返回true的项组成的数组  

判断一个对象是否为数组时,在ES5中可以直接使用Array.isArray(obj),
在不支持isArray方法的环境中时,可以使用obj instanceof Array来判断只有一个作用域的情况,

最佳判断方法是利用Array对象的内部属性[[Class]]来判断:

function isArray(obj){
  return Object.prototype.toString.call(obj) == ‘[object Array]‘;
}

关于String的slice()、sbustr()、substring(),如果只传入了第一个参数,则截取从第一个参数至末尾。当传入负参数时:

  1、slice()会将负参数加上字符串长度,使参数为正

  2、substr()会将负的第一个参数加上字符串的长度,将负的第二个参数转换为0

  3、substring()会将所有负参数转换为0,如果第2个参数小于第1个参数,会互换两个参数

3. 内建包装对象    String、Number和Boolean

String、Number和Boolean对象是相应简单数据类型的包装对象

共同的特征:作为构造函数调用时是创建一个对象,作为一般函数调用时则是类型转换。

由于所有对象相应的Boolean类型值都是true,所以需要特别注意的是new Boolean(false)在布尔运算中会作为true去处理,(永远不要使用Boolean对象)

String、Number和Boolean类型的变量可以直接调用相应包装对象的方法

实际上在后台会自动转换为相应包装对象,然后调用方法。String和Boolean类型的字面量也可以直接调用包装对象的方法,

但是Number类型的字面量不能直接调用Number对象的方法。

console.info(5.toFixed(2));   //异常

Number对象属性和方法

属性或方法 名称 说明
属性 Number.NaN 非数字,但属于number类型
 
Number.MAX_VALUE


Number类型能够表示的最大值

 
Number.MIN_VALUE


Number类型能够表示的最小值

  Number.NEGAIVE_INFINITY 负无穷
  Number.POSITIVE_INFINITY 正无穷
     
方法
valueOf()


返回对象表示的基本类型的数值

 
toLocaleString()


返回对象表示的数值的字符串形式

 
toString()


返回对象表示的数值的字符串形式,可以接受一个表示进制的参数

 
toFixed()


按照指定的小数位返回数值的字符串表示,如果数值比指定的小数位多,会进行四舍五入处理

 
toExponential()


返回以指数表示法表示的数值的字符串形式,接受一个表示小数个数的参数

 
toPrecision()


接受一个表示数值的所有数字的位数(不包括指数部分),可能返回固定大小格式,也可能返回指数形式

     

ECMAScript中toFiexd问题

在ES中四舍五入的函数 toFixed(n) , n为要保留的小数位数。
n为0~20,当n超过20的时候,JS会出错。

如果小数点前和要截取的前一位都是0时,将会出现精度问题。而且FF与IE的规则也不同,有些是四舍五入,有些是四舍六入。会根据不同的情况而不同。

var num = 0.056;
alert (num.toFixed(1));  //会弹出0.0  或者0.1

可以试着重写tofixed方法。

Number.prototype.toFixed=function(len){
                var add = 0;
                var s,temp;
                var s1 = this + "";
                var start = s1.indexOf(".");
                if(s1.substr(start+len+1,1)>=5)add=1;
                var temp = Math.pow(10,len);
                s = Math.floor(this * temp) + add;
                return s/temp;
                }

这样,0,056就都可以直接转为0.1了。

4. Date对象

ECMAScript中的Date对象采用UTC(Coordinated Universal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。

4.1 创建Date对象方法

方法 说明
new Date() 构造函数创建对象自动获取当前日期和时间,也可以传入表示日期的毫秒数来创建日期,
Date.parse() 接受一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数,日期格式和具体的实现及地区有关。如果传入的字符串不能表示日期,返回NaN。
Date.UTC() 返回表示日期的毫秒数,参数分别是年份、基于0的月份、月中的哪一天(1~31)、小时(0~23)、分钟、秒以及毫秒数,这些参数中,前面两个参数(年月)是必须的,没有提供天数时默认为1,其它参数没有提供时默认为0。
Date.now() 在ES5中新增,返回表示调用这个方法的日期和时间的毫秒数。这可以用来分析代码执行的时间
//支持Date.now()时            //不支持Date.now()的情况下
var start = Date.now();        var start = +new Date();
//doSomething();            //doSomething();
var end = Date.now();         var end = +new Date();
var time = end -start;         var time = end - start;

获取并转化系统时间

获取系统时间

var myTime = new Date();

var iYear = myTime.getFullYear();
var iMonth = myTime.getMonth()+1;       //注意月份需要加1,因为系统从0开始计数,实际从1开始计数
var iDate = myTime.getDate();
var iWeek = myTime.getDay();
var iHours = myTime.getHours();
var iMin = myTime.getMinutes();
var iSec = myTime.getSeconds();
var str = ‘‘;

if( iWeek === 0 ) iWeek = ‘星期日‘;     //也可用swich语句
if( iWeek === 1 ) iWeek = ‘星期一‘;
if( iWeek === 2 ) iWeek = ‘星期二‘;
if( iWeek === 3 ) iWeek = ‘星期三‘;
if( iWeek === 4 ) iWeek = ‘星期四‘;
if( iWeek === 5 ) iWeek = ‘星期五‘;
if( iWeek === 6 ) iWeek = ‘星期六‘;

str = iYear+ ‘年‘ +iMonth+‘月‘+iDate+‘日 ‘+iWeek+‘ ‘+ toTwo(iHours)+‘ : ‘+ toTwo(iMin)+‘ : ‘+ toTwo(iSec);

console.info(str);   //2014年11月4日 星期日 11 : 55 : 00

5. RegExp对象后面单独提出总结

6. Error对象

  常见内建错误对象,异常捕获语句中try/catch捕获的错误类型

错误类型 说明

Error


Error是所有错误类型的父类,因此所有错误类型共享了一组相同的属性和方法,这个基类型的主要作用是供开发人员抛出自定义错误


URIError


在使用encodeURI()或decodeURI(),URI格式不正确时抛出


TypeError


在变量中保存着意外的类型,或者访问不存在的方法时,会导致这种错误


SyntaxError


把语法错误的字符串传入eval()时抛出


ReferenceError


找不到对象的情况下抛出


RangeError


在数值超出范围时抛出,如定义数组时传入负参数就会抛出RangeError


EvalError


在使用eval()函数而发生异常时抛出,简单的说,如果没有把eval()当成函数调用,就会抛出错误

时间: 2024-11-06 18:14:10

内建对象的相关文章

JavaScript内建对象

JavaScript内建对象包括: String.Array.Math.Date.Boolean.Number.Event.RegExp. 使用内建对象的属性和方法需要使用new关键字和构造函数创建内建对象的实例,对象实例继承对象的属性和方法. String 定义了所有处理字符串的操作. Array 提供一个数组模型,存储大量有序数据. Math 定义了所有数学运算. Date 定义了所有处理日期和时间的操作. Boolean 定义了处理布尔值的操作. Number 定义了处理数字的操作. Ev

javascript——对象的概念——内建对象

包括内建对象的所有对象都是Object对象的子对象. 1.Array():构建数组的内建构造器函数 例:创建数组方式有两种: 2.Boolean:是对象,与基本数据类型 布尔值 不相同 例:创建Boolean对象. 上例中 a 是对象而不是布尔值.可以通过valueOf()获取其布尔值.通常 Boolean 对象不会用于创建对象,而是利用该对象强制转换数据类型. 在强制转换时,以下内容将被转换为 false:空字符串'';null;undefined;数字0;NaN;false; 例: 即:Bo

javascript 对象初探 (四)--- 内建对象Array

 我们不要去纠结神马是内建对象,神马是內建构造器.到后来你们便会发现其实她们都是对象. Array()是一个构建数组的內建构造器函数: var arr = new Array(); 与下面的是等效的: var arr = []; //数组文本表识法 无论数组是以神马方式创建的,我们都可以照常向里面添加元素. arr[0] = 1; arr[1] = 2; console.log(arr) // [1, 2] 当我们使用构造器函数Array()创建数组时,也可以通过传值的方式为其添加元素: var

ASP基础教程:ASP内建对象Response

在上一篇中作者给大家详细介绍了 ASP 内建对象之一 Request 的使用方法,相信各位通过一系列的实践已经能够熟练掌握,本篇将继续给大家介绍 ASP 的另一个内建对象 Response. 最近,有很多朋友来“妹儿”催我加快 ASP 篇一文的写作速度,并急切地询问哪里有关于 ASP 的教材.我深深地被大家的学习热情所打动,因此决定将自己平时所搜集的一些 ASP 信息资料拿出来和大家共享,也希望所有的朋友能慷慨地将自己搜集的有关 ASP 的资料告诉作者,谢谢.由于目前国内有关 ASP 的中文教材

ASP基础教程:ASP内建对象Application和Session

在上一篇中作者给大家详细介绍了 ASP 内建对象 Response 的使用方法,在这一篇中作者将继续给大家介绍另两个非常实用且重要的 ASP 的内建对象 Application 和 Session. 在 ASP 的内建对象中除了用于发送.接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个用户信息的对象. 让我们先来看看 Application 对象.在同一虚拟目录及其子目录下的所有 .asp 文件构成了 ASP 应用程序.我们非但可以使用 Applicat

ASP基础教程:ASP内建对象Server

通过前九篇的理论和实践,相信大家已经对 ASP 有了系统的了解,虽然至今为止,我们只学了 ASP 的 4 个内建对象,但已经完全能够写出一些实用的小程序了.今天,作者将继续给大家讲解最后一个 ASP 内建对象——Server. 在开始本次课程之前,我仍要在这里回答一些朋友们提出的比较普遍的问题.最近仍有不少朋友来信问我,如何构建服务器端的 Active Server Page 环境.我想可能是我在前几篇中没有讲清楚,因此,在本篇的开头有必要把这个问题详细阐述一遍. ASP 的应用完全是基于 Mi

ES6内建对象的继承

在ES6之前, JS是无法通过继承的方式创建属于自己的特殊数组的, 也就是说可以使用原型链来继承数组的一些方法, 但是某些返回一个数组的方法返回的值还是一个Array的实例, 例如slice, length等, 还是Array的实例属性, 和当前原型链末尾的函数没什么关系, 只是借用了Array的方法. 1 // 实例: 2 // Array的行为 3 let colors = []; 4 colors[0] = 'red'; 5 console.log(colors.length); // 1

JS的内建对象

JS中内置了17个对象,常用的是Array对象.Date对象.正则表达式对象.string对象.Global对象,即js已经创建好了,你不用自己再创建的对象,直接就可以调用. Object 是 JavaScript 中所有对象的父对象数据封装类对象:Object.Array.Boolean.Number 和 String其他对象:Function.Arguments.Math.Date.RegExp.Error Array对象Concat():表示把几个数组合并成一个数组.Join():返回字符

JavaScript内建对象-String

JavaScript中通过双引号或单引号界定一个字符串. String对象只有一个属性:length属性,得到字符串的长度. 处理字符串本身的方法 charAt(index) 返回字符串中index指定位置处的一个字符. charCodeAt(index) 返回字符串中index指定位置处的字符的Unicode编码(0~65 535之间的整数,index超出字符串范围则返回NaN). concat(str2) 将字符串Str2连接在当前字符串后组成一个新的字符串,其功能与“+”运算符相同. fr