在 JavaScript 中一切皆对象,包括数字、字符串、函数等等,此外,JavaScript 还允许自定义对象
1、自定义对象
(1)定义对象
JavaScript 是面向对象的语言,但 JavaScript 不使用类,因此也不会通过类来创建对象
JavaScript 除了可以使用内置对象,还允许通过函数来定义对象
function person(firstName,lastName)
{
this.firstName = firstName;
this.lastName = lastName;
this.setName = setName;
function setName(firstName,lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
}
(2)创建对象
var obj = new person("Bill","Gates");
(3)访问属性和方法
obj.setName("Steve","Jobs")
document.write(obj.firstName + " " + obj.lastName + "<br />");
// Steve Jobs
(4)添加属性
obj.age = 50;
document.write(obj.age + "<br />");
// 50
(5)遍历属性
for (x in obj)
{
document.write(x + " ");
}
// firstName lastName setName age
以下是 JavaScript 中常用的内建对象
2、Array
Array 对象用于在单个变量中存储多个值
可以使用以下语句创建 Array 对象:
var myArray = new Array();
var myArray = new Array(size);
// 参数 size 是期望的元素个数
var myArray = new Array(element0, element1, ..., elementn);
// 参数 element0 ..., elementn 是初始元素列表
(1)属性
- constructor:对创建对象的函数的引用
var test = new Array();
if (test.constructor==Array) {document.write("This is an Array");}
if (test.constructor==Boolean) {document.write("This is a Boolean");}
if (test.constructor==Date) {document.write("This is a Date");}
// This is an Array
document.write(test.constructor);
// function Array() { [native code] }
- length:数组中元素的数目
(2)方法
添加或删除元素
concat(array1, ...... ,arrayX):连接数组,并返回结果
- pop():删除并返回数组的最后一个元素
- push(element1, .... ,elementX):向数组的末尾添加一个或更多元素,并返回新的长度
- shift():删除并返回数组的第一个元素,直接修改原有对象
unshift(element1, .... ,elementX):向数组的开头添加一个或更多元素,并返回新的长度,直接修改原有对象
splice(index,howmany,element1,.....,elementX):添加/删除元素,返回被删除的元素,index 指定初始位置,howmany 指定数量,element1,.....,elementX 指定向数组添加的新元素
var arr = new Array("A","B","C","D","E","F");
arr.splice(1,4,"T");
document.write(arr);
// A,T,F
工具
- slice(start,end):类似于 Python 中的切片操作,用于创建副本,在原数组上进行操作
var arr = new Array("1","2","3","4","5");
document.write(arr.slice(1,4));
// 2,3,4
- reverse():数组反转
var arr = new Array("5","4","3","2","1");
arr.reverse();
document.write(arr);
// 1,2,3,4,5
- sort(sortby):数组排序,在原数组上进行操作,sortby 是用于指定排序规则的函数,它接受两个参数,返回一个用于说明两个参数相对顺序的数字,默认是按字符编码进行排序
function sortNumber(a, b){return a - b;}
var arr = new Array("5","1","4","2","3");
arr.sort(sortNumber);
document.write(arr);
// 1,2,3,4,5
- join(separator):把数组所有元素放入一个字符串,并通过 separator 指定分隔符进行分隔,默认为逗号
var arr = new Array("A","B","C");
document.write(arr.join());
// A,B,C
转换成字符串
- toString():把数组转换为字符串,并返回结果
- toLocaleString():根据本地时间格式把数组转换为字符串,并返回结果
其它
- toSource():返回 Array 对象的源代码
- valueOf():返回 Array 对象的原始值
3、Boolean
Boolean 对象用于表示两个 "true" 或 "false"
可以使用以下语句创建 Boolean 对象:
new Boolean(value); //构造函数
Boolean(value); //转换函数
(1)属性
- constructor:对创建对象的函数的引用
(2)方法
转换成字符串
- toString():把逻辑值转换为字符串,并返回结果
其它
- toSource():返回 Boolean 对象的源代码
- valueOf():返回 Boolean 对象的原始值
4、Date
Date 对象用于处理日期和时间
可以使用以下语句创建 Date 对象:
var myDate = new Date()
// Date 对象会自动把当前日期和时间作为初始值
(1)属性
- constructor:对创建对象的函数的引用
(2)方法
- Date():返回当前的日期和时间
document.write(Date())
// Fri Feb 15 2019 23:00:00 GMT+0800 (中国标准时间)
返回时间
- getFullYear():返回 Date 对象的年份(4 位数字)
- getMonth():返回 Date 对象的月份(0 ~ 11)
- getDate():返回 Date 对象的日期(1 ~ 31)
- getDay():返回 Date 对象的星期(0 ~ 6)
- getHours():返回 Date 对象的小时(0 ~ 23)
- getMinutes():返回 Date 对象的分钟(0 ~ 59)
- getSeconds():返回 Date 对象的秒数(0 ~ 59)
- getMilliseconds():返回 Date 对象的毫秒(0 ~ 999)
根据世界时返回时间
- getUTCFullYear():根据世界时返回 Date 对象的年份(4 位数字)
- getUTCMonth():根据世界时返回 Date 对象的月份(0 ~ 11)
- getUTCDate():根据世界时返回 Date 对象的日期(1 ~ 31)
- getUTCDay():根据世界时返回 Date 对象的星期(0 ~ 6)
- getUTCHours():根据世界时返回 Date 对象的小时(0 ~ 23)
- getUTCMinutes():根据世界时返回 Date 对象的分钟(0 ~ 59)
- getUTCSeconds():根据世界时返回 Date 对象的秒数(0 ~ 59)
- getUTCMilliseconds():根据世界时返回 Date 对象的毫秒(0 ~ 999)
设置时间
- setFullYear(year,month,day):设置 Date 对象的年份(4 位数字)
- setMonth(month,day):设置 Date 对象的月份(0 ~ 11)
- setDate(day):设置 Date 对象的日期(1 ~ 31)
- setHours(hour,min,sec,millisec):设置 Date 对象的小时(0 ~ 23)
- setMinutes(min,sec,millisec):设置 Date 对象的分钟(0 ~ 59)
- setSeconds(sec,millisec):设置 Date 对象的秒数(0 ~ 59)
- setMilliseconds(millisec):设置 Date 对象的毫秒(0 ~ 999)
根据世界时设置时间
- setUTCFullYear(year,month,day):根据世界时设置 Date 对象的年份(4 位数字)
- setUTCMonth(month,day):根据世界时设置 Date 对象的月份(0 ~ 11)
- setUTCDate(day):根据世界时设置 Date 对象的日期(1 ~ 31)
- setUTCHours(hour,min,sec,millisec):根据世界时设置 Date 对象的小时(0 ~ 23)
- setUTCMinutes(min,sec,millisec):根据世界时设置 Date 对象的分钟(0 ~ 59)
- setUTCSeconds(sec,millisec):根据世界时设置 Date 对象的秒数(0 ~ 59)
- setUTCMilliseconds(millisec):根据世界时设置 Date 对象的毫秒(0 ~ 999)
返回毫秒数与分钟差
- getTime():返回 1970 年 1 月 1 日至今的毫秒数
- UTC():根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数
- parse():返回 1970 年 1 月 1 日午夜到指定日期的毫秒数
- getTimezoneOffset():返回本地时间与格林威治标准时间的分钟差
转换成字符串
- toString():把 Date 对象转换为字符串
var d = new Date()
document.write (d.toString())
// Fri Feb 15 2019 23:00:00 GMT+0800 (中国标准时间)
- toTimeString():把 Date 对象的时间部分转换为字符串
- toDateString():把 Date 对象的日期部分转换为字符串
- toUTCString():根据世界时把 Date 对象转换为字符串
var d = new Date()
document.write (d.toUTCString())
// Fri, 15 Feb 2019 15:00:00 GMT
- toLocaleString():根据本地时间格式把 Date 对象转换为字符串
var d = new Date()
document.write (d.toUTCString())
// 2019/2/15 下午11:00:00
- toLocaleTimeString():根据本地时间格式把 Date 对象的时间部分转换为字符串
- toLocaleDateString():根据本地时间格式把 Date 对象的日期部分转换为字符串
其它
- toSource():返回 Date 对象的源代码
- valueOf():返回 Date 对象的原始值
5、Math
Math 对象用于执行数学任务
注意,Math 对象没有构造函数,它的属性和方法不是某个具体对象的方法
(1)属性
- PI:圆周率
document.write(Math.PI);
// 3.141592653589793
- E:自然对数的底数
document.write(Math.E);
// 2.718281828459045
- LN2:以 e 为底的 2 的对数
document.write(Math.LN2);
// 0.6931471805599453
- LN10:以 e 为底的 10 的对数
document.write(Math.LN10);
// 2.302585092994046
- LOG2E:以 2 为底的 e 的对数
document.write(Math.LOG2E);
// 1.4426950408889634
- LOG10E:以 10 为底的 e 的对数
document.write(Math.LOG10E);
// 0.4342944819032518
- SQRT2:2 的平方根
document.write(Math.SQRT2);
// 1.4142135623730951
- SQRT1_2:2 的平方根的倒数
document.write(Math.SQRT1_2);
// 0.7071067811865476
(2)方法
一般
- abs(x):绝对值
- ceil(x):上取整
- floor(x):下取整
- round(x):四舍五入取整
- max(x,y):最大值
- min(x,y):最小值
- random():随机数
指数、对数、幂函数
- exp(x):指数值
- log(x):对数值
- pow(x,y):幂值
- sqrt(x):平方根
三角函数
- sin(x):正弦值
- cos(x):余弦值
- tan(x):正切值
- asin(x):反正弦值
- acos(x):反余弦值
- atan(x):反正切值
其它
- toSource():返回 Date 对象的源代码
- valueOf():返回 Date 对象的原始值
6、Number
在 JavaScript 中只有一种数字类型,它将所有数字储存为 64 位的浮点数
整数(不适用小数或指数计数法)的精度为 15 位,小数的精度为 17 位
若数字的前缀为 0,则 JavaScript 将其解释为八进制数;若前缀为 0x,则解释为十六进制数
可以使用以下语句创建 Number 对象:
new Number(value); //构造函数
Number(value); //转换函数
(1)属性
constructor:对创建对象的函数的引用
MAX_VALUE:可表示的最大的数
document.write(Number.MAX_VALUE);
// 1.7976931348623157e+308
- MIN_VALUE :可表示的最小的数
document.write(Number.MIN_VALUE);
// 5e-324
- POSITIVE_INFINITY:特殊值,表示正无穷大
var x = Number.MAX_VALUE * 2;
if (x == Number.POSITIVE_INFINITY) { document.write(x); }
// Infinity
- NEGATIVE_INFINITY:特殊值,表示负无穷大
var x = -Number.MAX_VALUE * 2;
if (x == Number.NEGATIVE_INFINITY) { document.write(x); }
// -Infinity
- NaN:特殊值,表示非数字值,NaN 与所有值都不相等,包括它自己,但是可以用 isNaN 判断
var x = Number.NaN;
if (isNaN(x)) { document.write(x); }
// NaN
(2)方法
转换成不同格式的数字
- toFixed(num):将 Number 对象四舍五入为指定小数位数的数字,num 用于指定小数位数,默认为 0,范围为 0 ~ 20
var number = new Number(12.34);
document.write(number.toFixed(1))
// 12.3
- toExponential(num):将 Number 对象转换为使用指数计数法的数字,num 用于指定小数位数,默认为使用尽可能多的数字,范围为 0 ~ 20
var number = new Number(123.4);
document.write(number.toExponential(1))
// 1.2e+2
- toPrecision(num):可在对象的值超出指定位数时将其转换为指数计数法,num 用于指定指数计数法的最小位数,默认为调用方法 toString(),范围为 1 ~ 21
转换成字符串
- toString(radix):将数字转换为字符串,radix 用于指定数字基数,默认为 10,范围为 2 ~ 36
var number = new Number(1234);
document.write(number.toString(2))
// 10011010010
- toLocaleString():将数字转换为本地格式的字符串,根据本地规范进行格式化
其它
- valueOf():返回 Number 对象的基本数字值,通常在需要时后台将进行自动调用
7、String
String 对象用于处理文本
JavaScript 中的字符串是不可变的类型,String 类定义的方法都不能改变字符串的内容,它们返回全新的字符串,而非修改原始的字符串
可以使用以下语句创建 String 对象:
new String(value); //构造函数
String(value); //转换函数
(1)属性
- constructor:对创建对象的函数的引用
- length:返回字符串的字符数目
(2)方法
格式控制
- big():大号字符串
- small():小号字符串
- bold():粗体字符串
- italics():斜体字符串
- blink():闪动字符串
- strike():删除线
- sub():下标
- sup():上标
- fontcolor(color):字体颜色
- fontsize(size):字体大小
- fixed():打字机文本
- anchor(anchorname):创建锚
var str = "Hello world";
document.write(str.anchor("myAnchor"));
- link(url):将字符串显示为链接
var str = "Hello world";
document.write(str.link("URL"));
大小写
- toLowerCase():把字符串转换为小写
toUpperCase():把字符串转换为大写
- toLocaleLowerCase():按照本地方式把字符串转换为小写
toLocaleUpperCase():按照本地方式把字符串转换为大写
字符
- charAt():返回指定位置的字符
- charCodeAt():返回指定位置的字符的 Unicode 编码
- fromCharCode(Unicode1, ... ,UnicodeX):从字符编码创建一个字符串
document.write(String.fromCharCode(72,69,76,76,79))
// HELLO
工具
- indexOf(searchvalue,fromindex):检索字符串,searchvalue 定义需要检索的字符串值,fromindex 定义在字符串中开始检索的位置,默认为 0
- lastIndexOf(searchvalue,fromindex):从后向前检索字符串,searchvalue 定义需要检索的字符串值,fromindex 定义在字符串中开始检索的位置,默认为 length - 1
- search(regexp/substr):根据正则表达式/子字符串检索字符串,返回匹配的位置
- match(regexp/substr):根据正则表达式/子字符串检索字符串,返回指定的值
- replace(regexp/substr,replacement):根据正则表达式/子字符串的匹配结果替换字符串
- localeCompare(target):根据本地排序规则与 target 字符串进行比较
- split(separator,howmany):把字符串分割为字符串数组,separator 指定分隔符,howmany 指定返回数组的最大长度
- slice(start,end):类似于 Python 中的切片操作,用于创建副本
- substr(start,length):返回从 start 下标开始的长度为 length 的子字符串
- substring(start,stop):返回从 start 下标开始至 stop 下标结束的子字符串
转换成字符串
- toString():返回字符串
其它
- toSource():返回 String 对象的源代码
- valueOf():返回 String 对象的原始值
8、RegExp
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具
可以使用以下语句创建 RegExp 对象:
new RegExp(pattern, attributes);
pattern 是一个字符串,用于指定正则表达式的模式
attributes 是一个可选的字符串,用于指定正则表达式的标志
- 若为 "g",则指定全局匹配
- 若为 "i",则指定区分大小写
- 若为 "m",则指定多行匹配
(1)属性
- global:是否具有标志 g
- ignoreCase:是否具有标志 i
- multiline:是否具有标志 m
- lastIndex:开始下一次匹配的字符位置
- source:正则表达式的源文本
(2)方法
- compile():编译正则表达式
- exec(string):检索字符串中的正则表达式的匹配,返回找到的值,并确定其位置
var str = "abcdcbabcdcba";
var patt1 = new RegExp("a");
var result = patt1.exec(str);
document.write(result);
// a
- test(string):检测一个字符串是否匹配某个模式,返回 true 或 false
var str = "abcdcbabcdcba";
var patt1 = new RegExp("a");
var result = patt1.test(str);
document.write(result);
// true
9、Function
全局属性和函数可用于所有内建的 JavaScript 对象
(1)全局属性
- Infinity:正无穷大
- NaN:特殊值,非数字值
- undefined:未定义的值
- Packages:根 JavaPackage 对象
- java:java.* 包层级的一个 JavaPackage
(2)全局函数
编码解码
decodeURI(URIstring):解码某个编码的 URI
- decodeURIComponent(URIstring):解码一个编码的 URI 组件
- encodeURI(URIstring):把字符串编码为 URI
- encodeURIComponent(URIstring):把字符串编码为 URI 组件
escape(string):对字符串进行编码
document.write(escape("Hello World!"));
// Hello%20World%21
- unescape(string):对由 escape() 编码的字符串进行解码
数值检查
- isFinite():检查某个值是否为有穷大
- isNaN():检查某个值是否为数字
对象转换
- Number(object):把对象的值转换为数字
- String(object):把对象的值转换为字符串
- parseInt(string, radix):解析字符串,并返回整数
- parseFloat(string):解析字符串,并返回浮点数
其它
- eval(string):将 string 作为脚本执行
- getClass(object):返回一个 JavaObject 的 JavaClass
10、Event
事件通常与函数配合使用,通过事件驱动函数执行,以下属性可插入 HTML 标签来定义事件动作
鼠标
- onclick:鼠标点击
- ondblclick:鼠标双击
- onmousedown:鼠标按键被按下
- onmouseup:鼠标按键被松开
- onmousemove:鼠标被移动
- onmouseout:鼠标从某元素移开
- onmouseover:鼠标移到某元素上
键盘
- onkeydown:键盘按键被按下
- onkeyup:键盘的键被松
- onkeypress:键盘按键被按下或按住
加载
- onload:加载文档或图像
- onunload:退出页面
- onerror:加载文档或图像时发生错误
- onabort:加载图像时被中断
其它
- onfocus:获得焦点
- onblur:失去焦点
- onselect:文本被选定
- onsubmit:提交按钮被点击
- onchange:用户改变域的内容
- onreset:重置按钮被点击
- onresize:窗口或框架被调整尺寸
参考资料: