JavaScript内置与本地,宿主函数
2011年09月08日
javascript函数一共可分为五类:
??常规函数
??数组函数
??日期函数
??数学函数
??字符串函数
1.常规函数
javascript常规函数包括以下9个函数:
(1)alert函数:显示一个警告对话框,包括一个OK按钮。
(2)confirm函数:显示一个确认对话框,包括OK、Cancel按钮。
(3)escape函数:将字符转换成Unicode码。
(4)eval函数:计算表达式的结果。
(5)isNaN函数:测试是(true)否(false)不是一个数字。
(6)parseFloat函数:将字符串转换成符点数字形式。
(7)parseInt函数:将符串转换成整数数字形式(可指定几进制)。
(8)prompt函数:显示一个输入对话框,提示等待用户输入。例如:
(9)函数:解码由escape函数编码的字符。
2.数组函数
javascript数组函数包括以下4个函数:
(1)join函数:转换并连接数组中的所有元素为一个字符串。例:
function JoinDemo()
{
var a, b;
a = new Array(0,1,2,3,4);
b = a.join("-");//分隔符
return(b);//返回的b=="0-1-2-3-4"
}
(2)langth函数:返回数组的长度。例:
function LengthDemo()
{
var a, l;
a = new Array(0,1,2,3,4);
l = a.length;
return(l);//l==5
}
(3)reverse函数:将数组元素顺序颠倒。例:
function ReverseDemo()
{
var a, l;
a = new Array(0,1,2,3,4);
l = a.reverse();
return(l);
}
(4)sort函数:将数组元素重新排序。例:
function SortDemo()
{
var a, l;
a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
l = a.sort();
return(l);
}
3.日期函数
javascript日期函数包括以下20个函数:
(1)getDate函数:返回日期的“日”部分,值为1~31。例:
function DateDemo()
{
var d, s = "Today's date is: ";
d = new Date();
s += (d.getMonth() + 1) + "/";
s += d.getDate() + "/";
s += d.getYear();
return(s);
}
(2)getDay函数:返回星期几,值为0~6,其中0表示星期日,1表示星期一,...,6表示星期六。例:
function DateDemo()
{
var d, day, x, s = "Today is: ";
var x = new Array("Sunday", "Monday", "Tuesday");
var x = x.concat("Wednesday","Thursday", "Friday");
var x = x.concat("Saturday");
d = new Date();
day = d.getDay();
return(s += x[day]);
}
(3)getHours函数:返回日期的“小时”部分,值为0~23。例。
function TimeDemo()
{
var d, s = "The current local time is: ";
var c = ":";
d = new Date();
s += d.getHours() + c;
s += d.getMinutes() + c;
s += d.getSeconds() + c;
s += d.getMilliseconds();
return(s);
}
(4)getMinutes函数:返回日期的“分钟”部分,值为0~59。见上例。
(5)getMonth函数:返回日期的“月”部分,值为0~11。其中0表示1月,2表示3月,...,11表示12月。见前面的例子。
(6)getSeconds函数:返回日期的“秒”部分,值为0~59。见前面的例子。
(7)getTime函数:返回系统时间。
function GetTimeTest()
{
var d, s, t;
var MinMilli = 1000 * 60;
var HrMilli = MinMilli * 60;
var DyMilli = HrMilli * 24;
d = new Date();
t = d.getTime();
s = "It's been "
s += Math.round(t / DyMilli) + " days since 1/1/70";
return(s);
}
(8)getTimezoneOffset函数:返回此地区的时差(当地时间与GMT格林威治标准时间的地区时差),单位为分钟。
function TZDemo()
{
var d, tz, s = "The current local time is ";
d = new Date();
tz = d.getTimezoneOffset();
if (tz 的链接点的名称,另一个函数link设定的URL地址。
(2)big函数:将字体加到一号,与...标签结果相同。
(3)blink函数:使字符串闪烁,与...标签结果相同。
(4)bold函数:使字体加粗,与...标签结果相同。
(5)charAt函数:返回字符串中指定的某个字符。
(6)fixed函数:将字体设定为固定宽度字体,与...标签结果相同。
(7)fontcolor函数:设定字体颜色,与标签结果相同。
(8)fontsize函数:设定字体大小,与标签结果相同。
(9)indexOf函数:返回字符串中第一个查找到的下标index,从左边开始查找。
(10)italics函数:使字体成为斜体字,与...标签结果相同。
(11)lastIndexOf函数:返回字符串中第一个查找到的下标index,从右边开始查找。
(12)length函数:返回字符串的长度。(不用带括号)
(13)link函数:产生一个超级链接,相当于设定的URL地址。
(14)small函数:将字体减小一号,与...标签结果相同。
(15)strike函数:在文本的中间加一条横线,与...标签结果相同。
(16)sub函数:显示字符串为下标字(subscript)。
(17)substring函数:返回字符串中指定的几个字符。
(18)sup函数:显示字符串为上标字(superscript)。
(19)toLowerCase函数:将字符串转换为小写。
(20)toUpperCase函数:将字符串转换为大写。
一直也搞不清“本地对象”、“内置对象”和“宿主对象”在JavaScript中到底谁是谁。分不清其中的关系,总是在自以为自己明悟了的时候发现自己其实一点都不清楚。-_-!!!
本地对象
ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。
看定义有些不清楚,因为还未了解何为“宿主环境”的时候就引用了“宿主环境”这个概念,着实让人有些发晕。
不过,根据我强悍的文学功底,“宿主”一般是指寄生的生物选择的寄生体,这让我想起了“火影”里的“白”。简单说,就是用户的机器环境,包括操作系统和浏览器。
再来看一下,“本地对象”包含哪些内容:
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、 RangeError、ReferenceError、SyntaxError、TypeError、URIError
由此可以看出,简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。
内置对象
ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。
同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的区别。而ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。
如此就可以理解了。内置对象是本地对象的一种。而其包含的两种对象中,Math对象我们经常用到,可这个Global对象是啥东西呢?
Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在,有点玩人的意思。大家要清楚,在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。
类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。而且 Global对象的方法还不止这些。有关Global对象的具体方法和属性,感兴趣的同学可以看一下这里:JavaScript 全局对象参考手册
宿主对象
何为“宿主对象”?主要在这个“宿主”的概念上,前面我已经介绍了“火影”,介绍了“白”。而ECMAScript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”。
所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。
所有的BOM和DOM对象都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。
var oPerson = new Object;
oPerson.name = 'simaopig';
oPerson.age = '26';
这里我自己定义的对象oPerson就是宿主对象。因为 ECMAScript中未定义此对象,而此对象又只存在于我所运行的页面中。其貌似听起来是一个哲学命题。很奇怪我这款主题居然没有del的样式,残念。
看评论中,Andi的理解,这个oPerson的确应该叫user-defined object,用户自定义对象。嗯。。赞一个先。
总结
本地对象,就是那些官方定义好了的对象。内置对象是本地对象的一种,其只包含Global对象和Math对象。而宿主对象则是那些官方未定义,你自己构建的对象加上DOM和BOM对象组成的。
Math函数
* Math.abs() -- 返回数字的绝对值
* Math.acos() -- 返回数字的反余弦值
* Math.asin() -- 返回数字的反正弦值
* Math.atan() -- 返回数字的反正切值
* Math.atan2() -- 返回由x轴到点(x,y)的角度(以弧度为单位)
* Math.ceil() -- 返回大于等于数字参数的最小整数(取整函数),对数字进行上舍入
* Math.cos() -- 返回数字的余弦值
* Math.exp() -- 返回E(自然对数的底数)的x次幂(指数)
* Math.floor() -- 返回小于等于数字参数的最大整数,对数字进行下舍入
* Math.log() -- 返回数字的自然对数
* Math.max() -- 返回数个数字中较大的值
* Math.min() -- 返回数个数字中较小的值
* Math.pow() -- 返回底数的指定次幂
* Math.random() -- 返回0和1之间的伪随机数
* Math.round() -- 返回数字最接近的整数,四舍五入
* Math.sin() -- 返回数字的正弦值
* Math.sqrt() -- 返回数字的平方根
* Math.tan() -- 返回数字的正切值
Math属性
* Math.E 属性 -- 返回自然对数的底数,E约等于2.718
* Math.LN2 属性 -- 返回2的自然对数loge2,约等于0.693
* Math.LN10 属性 -- 返回10的自然对数loge2,约等于2.302
* Math.LOG2E 属性 -- 返回以2为底的E的对数log2e,约等于1.442
* Math.LOG10E 属性 -- 返回以10为底的E的对数log10e,越等于0.434
* Math.PI 属性 -- 返回圆的周长与其直径的比值(圆周率π),约等于3.1415926
* Math.SQRT1_2 属性 -- 返回0.5的平方根,或2的平方根除1,约等于0.707
* Math.SQRT2 属性 -- 返回2的平方根,约等于1.414
JavaScript String 对象与函数
* anchor() 函数 -- 返回HTML a 标签中name属性为str的锚
* big() 函数 -- 返回HTML big 标签定义的大字体
* blink() 函数 -- 返回使用HTML blink 标签定义的闪烁字符串
* bold() 函数 -- 返回使用HTML b 标签定义的粗体字符串
* charAt() 函数 -- 返回指定位置(n)的字符
* charCodeAt() 函数 -- 返回指定位置(n)字符的Unicode编码
* concat() 函数 -- 合并多个字符串,并返回合并的结果
* fixed() 函数 -- 返回使用HTML tt 标签定义的单间距字符串
* fontcolor() 函数 -- 返回使用HTML font 标签中color属性定义的带有颜色的字符串
* fontsize() 函数 -- 返回使用HTML font 标签中size属性定义的指定尺寸的字符串
* fromCharCode() 函数 -- 返回多个Unicode代码组成的字符串
* indexOf() 函数 -- 返回substring在string中的位置
* italics() 函数 -- 返回使用HTML i 标签定义的斜体字符串
* lastIndexOf() 函数 -- 返回substring在string中最后匹配(出现)的位置
* link() 函数 -- 返回使用HTML a 标签定义的链接
* localeCompare() 函数 -- 使用本地规则比较字符串string与string2,并返回比较结果
* replace() 函数 -- 将字符串string中的oldStr1替换为newStr2
* slice() 函数 -- 返回被截取的字符串
* small() 函数 -- 返回使用HTML small 标签定义的小字体的字符串
* split() 函数 -- 将字符串分割为字符串数组,并返回此数组
* strike() 函数 -- 返回使用HTML strike 标签定义删除线样式的字符串
* String() 函数 -- String对象的构造函数
* sub() 函数 -- 返回使用HTML sub 标签定义的下标字符串
* substr() 函数 -- 返回从string的startPos位置,长度为length的字符串
* substring() 函数 -- 返回从string的startPos位置,到endPos位置的字符串
* sup() 函数 -- 返回使用HTML sup 标签定义的上标字符串
* toLocaleLowerCase() 函数 -- 返回本地小写字符串
* toLocaleUpperCase() 函数 -- 返回本地大写字符串
* toLowerCase() 函数 -- 返回小写字符串
* toUpperCase() 函数 -- 返回大写字符串
JavaScript Date 对象与函数
* Date() 函数 -- 返回当前的日期与时间
* getDate() 函数 -- 返回date对象中的月份中的天数(1-31)
* getDay()函数 -- 返回date对象中的星期中的天数(0-6)
* getFullYear() 函数 -- 返回date对象中的四位数年份
* getHours()函数 -- 返回date对象中的小时数(0-23)
* getMilliseconds() 函数 -- 返回date对象中的毫秒数(0-999)
* getMinutes() 函数 -- 返回date对象中的分钟数(0-59)
* getMonth() 函数 -- 返回date对象中的月份数(0-11)
* getSeconds() 函数 -- 返回date对象中的秒数(0-59)
* getTime() 函数 -- 返回date对象的时间戳表示法(毫秒表示)
* getTimezoneOffset() 函数 -- 返回本地时间与用UTC表示当前日期的时间差,以分钟为单位
* getUTCDate() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份中的一天(1-31)
* getUTCDay() 函数 -- 返回date对象中用世界标准时间(UTC)表示的周中的一天(0-6)
* getUTCFullYear() 函数 -- 返回date对象中用世界标准时间(UTC)表示的四位年份
* getUTCHours() 函数 -- 返回date对象中用世界标准时间(UTC)表示的小时数(0-23)
* getUTCMilliseconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的毫秒数(0-999)
* getUTCMinutes() 函数 -- 返回date对象中用世界标准时间(UTC)表示的分钟数(0-59)
* getUTCMonth() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份数(0-11)
* getUTCSeconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的秒数(0-59)
* getYear() 函数 -- 返回date对象的年份(真实年份减去1900)
* Date.parse() 函数 -- 解析一个日期的字符串,并返回该日期距1970年1月1日午夜之间的毫秒数(时间戳)
* setDate() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setFullYear() 函数 -- 设置date对象中的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setHours() 函数 -- 设置date对象的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setMilliseconds() 函数 -- 设置date对象的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setMinutes() 函数 -- 设置date对象的分钟,秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setMonth() 函数 -- 设置date对象中月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setSeconds() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setTime() 函数 -- 使用毫秒数设置date对象,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setUTCDate() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setUTCFullYear() 函数 -- 设置date对象中用世界标准时间(UTC)表示的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setUTCHours() 函数 --- 设置date对象中用世界标准时间(UTC)表示的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setUTCMilliseconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setUTCMinutes() 函数 -- 设置date对象中用世界标准时间(UTC)表示的分钟,秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setUTCMonth() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setUTCSeconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
* setYear() 函数 -- 设置date对象的年份(真实年份减去1900)
* toDateString() 函数 -- 返回date对象的日期部分的字符串表示
* toGMTString() 函数 -- 返回date对象的格林威治时间(GMT)的字符串表示
* toLocaleDateString函数 -- 返回date对象的日期部分的本地化字符串
* toLocaleTimeString函数 -- 返回date对象的时间部分的本地化字符串
* toTimeString() 函数 -- 返回date对象的时间部分的字符串
* toUTCString函数 -- 返回date对象的世界标准时间(UTC)的字符串表示
* Date.UTC()函数 -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
JavaScript Number 对象与函数
Number常量
* Number.MAX_VALUE常量 -- 可表示的最大值,最大值为1.7976931348623157e+308
* Number.MIN_VALUE常量 -- 可表示的最小值,最小值为5e-324,MIN_VALUE代表的并不是负最小,而是最接近0的一个数
* Number.NaN常量 -- 非数值
* Number.NEGATIVE_INFINITY常量 -- 负无限大,溢出时返回该值
* Number.POSITIVE_INFINITY常量 -- 正无限大,溢出时返回该值
Number函数按字母排序
* toLocaleString() -- 使用本地格式转换一个字符串为数字,例如使用逗号分隔千位与点分隔小数部分
* toFixed() -- 将数字转换为一个小数点后有指定num位的字符串,非指数计数法,如果number大于1e+21将使用指数计数法
* toExponential() -- 将数字转换为一个小数点后有指定num位的字符串,指数计数法(数字剩余部分四舍五入)
* toPrecision() -- 将数字转换为字符串,当num大于number表示的整数部分时,使用非指数计数法,否则使用指数计数法表示数字
全局属性
* Infinity -- 表示无穷大的数值属性
* NaN -- 表示非数字值属性
* undefined -- 表示未定义的值
全局函数
* decodeURI -- 解码encodeURI函数编码的字符串
* decodeURIComponent -- 解码encodeURIComponent函数编码的字符串
* encodeURI -- 转义某些字符串对URI编码
* encodeURIComponent -- 转义某些字符串对URI的组件编码
* escape -- 使用转义序列编码字符串
* eval -- 执行字符串形式的JavaScript表达式或语句,并返回结果(如果有)
* isFinite -- 检测值是否为有限的
* isNaN -- 检测值是否为非数字
* parseFloat -- 将字符串解析为数字
* parseInt -- 将字符串解析为整数
* -- 解码escape函数编码的字符串
全局属性和函数可用于所有内建的 JavaScript 对象。
顶层函数(全局函数)
FF: Firefox, IE: Internet Explorer
函数 描述 FF IE
decodeURI() 解码某个编码的 URI。 1 5.5
decodeURIComponent() 解码一个编码的 URI 组件。 1 5.5
encodeURI() 把字符串编码为 URI。 1 5.5
encodeURIComponent() 把字符串编码为 URI 组件。 1 5.5
escape() 对字符串进行编码。 1 3
eval_r() 计算 JavaScript 字符串,并把它作为脚本代码来执行。 1 3
getClass() 返回一个 JavaObject 的 JavaClass。
isFinite() 检查某个值是否为有穷大的数。 1 4
isNaN() 检查某个值是否是数字。 1 3
Number() 把对象的值转换为数字。 1
parseFloat() 解析一个字符串并返回一个浮点数。 1 3
parseInt() 解析一个字符串并返回一个整数。 1 3
String() 把对象的值转换为字符串。 1
() 对由 escape() 编码的字符串进行解码。 1 3
顶层属性(全局属性)
FF: Firefox, IE: Internet Explorer
方法 描述 FF IE
Infinity 代表正的无穷大的数值。 1 4
java 代表 java.* 包层级的一个 JavaPackage。
NaN 指示某个值是不是数字值。 1 4
Packages 根 JavaPackage 对象。
undefined 指示未定义的值。 1 5.5
全局对象描述
全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。全局对象不是任何对象的属性,所以它没有名称。
在顶层 JavaScript 代码中,可以用关键字 this 引用全局对象。但通常不必用这种方式引用全局对象,因为全局对象是作用域链的头,这意味着所有非限定性的变量和函数名都会作为该对象的属性来查询。例如, 当JavaScript 代码引用 parseInt() 函数时,它引用的是全局对象的 parseInt 属性。全局对象是作用域链的头,还意味着在顶层 JavaScript 代码中声明的所有变量都将成为全局对象的属性。
全局对象只是一个对象,而不是类。既没有构造函数,也无法实例化一个新的全局对象。
在 JavaScript 代码嵌入一个特殊环境中时,全局对象通常具有环境特定的属性。实际上,ECMAScript 标准没有规定全局对象的类型,JavaScript 的实现或嵌入的 JavaScript 都可以把任意类型的对象作为全局对象,只要该对象定义了这里列出的基本属性和函数。例如,在允许通过 LiveConnect 或相关的技术来脚本化 Java 的 JavaScript 实现中,全局对象被赋予了这里列出的 java 和 Package 属性以及 getClass() 方法。而在客户端 JavaScript 中,全局对象就是 Window 对象,表示允许 JavaScript 代码的 Web 浏览器窗口。
例子
在 JavaScript 核心语言中,全局对象的预定义属性都是不可枚举的,所有可以用 for/in 循环列出所有隐式或显式声明的全局变量,如下所示:
var variables = "";
for (var name in this)
{
variables += name + "
";
document.write(variables);
}