Javascript对象
Javascript对象
Javascript是基于对象的语言。
对象是一种特殊的数据类型,由变量和函数共同构成。
-
变量称为对象的属性
-
函数称为对象的方法
对象分为:
- 内置对象
- 自定义对象
内置对象分为:
- Array数组对象
- String字符串对象
- Date日期对象
- Math数学对象
- RegExp正则表达对象
Array数组对象
数组对象的创建
通过数组的构造函数Array()来创建数组对象
new Array(); //返回一个空数组,长度为0
new Array(size); //返回一个长度为size的数组,且元素均为undefined
new Array(element0,element1,...,elementN); //使用指定参数的值来初始初始化数组
数组对象的属性
属性 | 描述 |
---|---|
constructor | 返回对创建此对象的构造函数的引用 |
length | 数组长度 |
prototype | 为对象添加属性和方法 |
数组对象的常用方法
方法 | 描述 |
---|---|
concat() | 连接两个或多个数组 |
join() | 把数组中的所有元素放入一个字符串,并用指定的分隔号隔开 |
push() | 向数组的末尾添加一个或多个元素,并返回新长度 |
pop() | 删除并返回数组最后一个元素 |
shift() | 删除并返回数组第一个元素 |
reverse() | 在原来数组的基础上,颠倒元素的顺序,不创建新的数组 |
slice() | 从已有数组中返回选定的元素 |
sort() | 对元素进行排序 |
splice() | 向数组中添加或删除一个或多个元素,返回被删除的元素 |
unshift() | 向数组开头添加一个或多个元素,返回新长度 |
-
concat()方法
连接两个或多个数组,返回合并后的新数组,原数组不变
arrayObject.concat(param1,param2,...,paramX)
- 至少需要一个param参数
- 参数param可以是具体的值,也可以是数组对象
- 多个参数用逗号(,)隔开
- 返回合并后的新数组,原数组保持不变
-
join()方法
将数组中的所有元素放入一个字符串中,并通过指定的分隔符隔开
arrayObject.join(separator)
- separator,可选,作为元素之间的分割符,默认为逗号(,)
- 返回 字符串,使用separator分隔符将数组的元素进行连接
-
push()方法
向数组的末尾添加一个或多个元素,返回数组的新长度
arrayObject.push(newElement1,newElement2,...,newElementX)
- newElement参数至少一个
- 返回数组的新长度
- 将参数依次追加到数组的尾部,无需创建新的数组
-
slice()方法
返回选定的元素
arrayObject.slice(start,[end])
- start,必须,开始的位置
- end,可选,结束的位置(不包括end)
- start,end都允许负数
-
sort()方法
数组的排序
arrayObject.sort([sortby])
- 参数sortby是函数,可选,用于规定排序的方式
- sortby缺省时,按照字符编码排序
- 在基础上直接进行排序,不产生新副本
-
splice()方法
添加1~n个元素或从数组中删除元素
arrayObject.splice(index,howmany,[item1,...,itemX])
- index,必需,规定添加或删除元素的位置
- howmany,必需,要删除元素的数量,0代表不删除
- 当删除元素时,返回所有被删除的元素数组
- item1,…,itemX,可选,表示向数组中添加或替换的新元素
- 在原数组上实现,不会产生副本
二维数组
通过在一维数组中存放另一个数组来模拟实现二维数组
String字符串对象
字符串的创建
方式:
- 字面量方式
- new方式
-
字面方式
var name="漫步时尚广场"; var address="中国 青岛 高新区"
-
new方式
通过调用String()构造函数来完成,并返回String对象
var movieName=new String("何以笙箫默"); var director=String("刘俊杰")
string和String的区别:
-
String是string的包装类
-
string是一种基本的数据类型,没有提供substring()方法
-
String是构造函数,用于创建字符串对象,具有substring()等方法
-
string没有提供prototype原型对象,
string String 类型 基本数据类型 String是string的包装类 构造函数,具有substring()等方法 prototype原型对象 没有提供 具有原型对象,通过浏览器的端点调试查看 typeof()函数查看 返回string String对象返回Object,String返回function 使用==比较时, 判断其值是否相等 判断是否对同一对象进行引用 生命周期 自动生成的会在代码执行后销毁 一直存在
-
字符串对象的常用方法
方法 | 描述 |
---|---|
anchor(name) | 创建一个锚点元素(具有name或id特征而不是href的<a>标签) |
bold() | 字符串加粗 |
charAt(index) | 返回指定位置的字符 |
fontcolor(color) | 字符串的颜色 |
fontsize(size) | 字符串显示的尺寸,取值为1~7的数字 |
indexOf(searchValue,[formIndex]) | 返回searchValue在字符串中首次出现的位置 |
lastindexOf(searchValue,[formIndex]) | 从后往前,返回首次出现的位置 |
slice(start,[end]) | 抽取从start到end(不包括end)为止的所有字符 |
substring(start,[stop]) | 抽取start到stop-1处的所有字符 |
split() | 把字符串分割成字符串组 |
sub() | 如果在<sub>中,把字符串显示为下标 |
sup() | 如果在<sup>中,把字符串显示为上标 |
toLowerCase() | 转换为小写 |
toUpperCase() | 转换为大写 |
search(regExp) | 检索字符串中指定的子字符串 |
replace(regExp/subStr,replacement) | 替换 |
match(searchValue/regExp) | 在字符串内检索指定的值,找到一个或者多个返回 |
-
IndexOf()方法
检索首次出现的位置
stringObject.indexOf(searchValue,[fromIndex])
- seachValue,被检索的字符串
- fromIndex,可选,字符串开始检索的位置,默认为0
- 当检索到子字符串时,返回位置。否则返回-1
- 字符串的下标是从0开始的
-
lastIndexOf()方法
从后往前进行检索,返回首次出现的位置
stringObject.laseIndexOf(searchValue,[fromIndex])
- searchValue,被检索的字符串
- fromIndex,可选,字符串开始检索的位置,默认为末尾
- 找到,返回位置。否则返回-1
-
slice()方法
从字符串中抽取一部分内容
stringObject.slice(start,[end])
- start,必选,起始下标
- end,可选,结束下标(不包括end)
- 允许负值
-
substring()方法
和slice()相似,从字符串中抽取一部分内容
stringObject.substring(start,[stop])
- start,必选
- stop,可选
- start和stop相等,返回一个空串
- start比stop大,交换两个参数
- 不接受参数
-
split()方法
把一个字符串分割成一个字符串数组
stringObject.split(separator,[howmany])
-
separator,必选,一个字符串或正则表达式,指定规则对字符串进行分割
-
howmany,可选,指定返回数组的最大个数,
howmany存在时,返回的子串个数不应该大于howmany
-
-
转义字符
转义字符 实现方法 双引号 \" 单引号 \’ Tab \t 退格 \b 换行 \n 回车 \r 反斜杠 \\ 换页符 \f
Date日期对象
Date对象的创建
通过日期对象(Date)来操作
new Date();
new Date(millisenconds);
new Date(yyyy,MM,dd);
new Date(yyyy,MM,dd,hh,mm,ss);
new Date(MM/dd/yyyy hh:mm:ss);
new Date("month dd,yyyy");
new Date("month dd,yyyy hh:mm:ss");
- 无参构造函数,返回一个系统当前时间的日期对象
- millisenconds,毫秒数,在GMT时间加上 此参数 得到一个日期对象
- yyyy,四位数年份
- MM,月份,取值为0(1月)到11(12月)
- dd,日,取值为1到31
- hh,小时,取值为0到23
- mm,分钟,取值为0到59
- ss,秒,取值为0到59
- month,月份,月份的英文全称或简写,例如Fri,Mar
Date对象的常用方法
提供获取日期和设置日期的方法
获取日期的方法 | 描述 |
---|---|
getDate() | 返回一个月中的某一天(1~31) |
getDay() | 返回一周中的某一天(0~6) |
getMonth() | 返回月份(0~11) |
getFullYear() | 返回4位数的月份 |
getHours() | 返回Date对象的小时(0~23) |
getMinutes() | 返回Date对象的分钟(0~59) |
getSeconds() | 返回Date对象的描述(0~59) |
getTime() | 返回1970年1月1日至今的毫秒数 |
设置日期的方法 | 描述 |
---|---|
setDate() | 设置日期(1~31) |
setMonth() | 设置月份(0~11) |
setFullYear() | 设置年份(四位数字) |
setHours() | 设置小时(0~23) |
setMinutes() | 设置分钟(0~59) |
setSeconds() | 设置秒数(0~59) |
setTime() | 以毫秒设置Date对象 |
-
setFullYear()方法
dateObject.setFullYear(year,month,day)
- year,必需,四位整数
- month,可选
- day,可选
-
setHours()方法
dateObject.setHours(hour,min,sec,millisec)
- hour,必需,取值为0~23
- min,可选,取值为0~59
- sec,可选,秒数,取值为0~59
- millisec,可选,毫秒数,取值为0~999
Math数学对象
提供数学运算中的常数和计算方法。
没有构造函数,直接使用Math对象
Math对象的属性
属性 | 描述 |
---|---|
E | 常量e,自然对数的底数(约为2.718) |
LN2 | 返回2的自然对数(约为0.693) |
LN10 | 返回10的自然对数(约为2.302) |
LOG2E | 返回以2为底的e的对数(约为1.442) |
LOG10E | 返回以10为底的e的对数(约为0.434) |
PI | 圆周率(约为3.14159) |
SORT2 | 返回2的平方根(约为1.414) |
SORT1_2 | 返回2的平方根的倒数(约为0.7071) |
Math对象的方法
方法 | 描述 |
---|---|
abs(x) | 返回数字的绝对值 |
ceil(x) | 上取整(3.1=4) |
floor(x) | 下取整(3.9=3) |
round(x) | 四舍五入 |
exp(x) | 返回e的指数 |
log(x) | 返回数字的自然对数(底为e) |
max(x,y) | 求最大值 |
min(x,y) | 求最小值 |
pow(x,y) | 返回x的y次幂 |
sqrt(x) | 返回数字的平方根 |
random() | 返回0~1之间的随机数 |
sin(x)/cos(x)/tan(x) | 正弦,余弦,正切值 |
asin(x)/acos(x)/atan(x) | 反正弦,反余弦,反正切值 |
RegExp正则表达式对象
通过单个字符串来描述,匹配一系列字符串
RegExp对象的创建
创建方式:
- 直接量方式
- 构造函数方式
var reg=/pattern/attributes; //直接量方式
var regExp=new RegExp(pattern,attributes); //构造函数方式
-
pattern,一个字符串或表达式
-
attributes,可选的字符串,取值为g,i,m
修饰符 描述 i 匹配忽略大小写 g 全局匹配(匹配到一个不会停止,直到完成所有匹配) m 多行匹配,^匹配开头,$匹配结尾
pattern部分,包括 元字符,括号表达式,量词
元字符 | 描述 |
---|---|
. | 用于查找单个字符,除了换行和行结束符 |
\w | [A-Za-z0-9_] |
\W | 任何非单词字符,[^A-Za-z0-9_] |
\d | 数字 |
\D | 非数字 |
\s | 空白字符 |
\S | 非空白字符 |
\n | 换行符 |
\r | 回车符 |
\xxx | 查找以八进制数xxx规定的字符 |
\xdd | 查找以十六进制数dd规定的字符 |
括号表达式 | 描述 |
---|---|
[abc] | 查找括号内的任意字符 |
[^abc] | 查找除括号内的其他任意字符 |
[0-9] | 查找0-9之间的任意数字 |
[a-z] | 查找a-z之间的任意字母 |
[A-Z] | 查找A-Z之间的任意字母 |
[A-z] | 查找A-z之间的任意字符 |
(boy|girl|baby) | 查找括号内的某一项 |
量词 | 描述 |
---|---|
n+ | 至少一个n的字符串 |
n* | 零个或多个n的字符串 |
n? | 零个或一个字符串 |
n{x} | x个n的字符串 |
n{x,y} | x或y个n的字符串 |
n{x,} | 至少x个n的字符串 |
n$ | 任何结尾为n的字符串 |
^n | 任何开头为n的字符串 |
?=n | 任何其后紧接指定字符串n的字符串 |
?!n | 任何其后没有紧接指定字符串n的字符串 |
var moblieReg=new RegExp("1[3|4|5|8][0-9]{9}");
var telephoneReg=/^((\d{3}-\d{8})|(\d{4}-\d{7}))$/;
- 1 3,4,5,8 9个0~9的数字
- 3个数字-8个数字 或 4个数字-7个数字
RegExp对象的方法
方法 | 描述 |
---|---|
compile | 编译正则表达式 |
exec | 检索字符串中指定的值。返回找到的值,确定其位置 |
test | 检索字符串中指定的值。返回true或false |
-
exec()方法
检索字符串中的正则表达式的匹配情况,匹配成功,返回匹配内容及其所在的位置
var result=RegExpObject.exec(string)
-
string,必需,被检索的字符串
-
返回第一个匹配的内容,可以通过循环进行全局匹配
-
result,匹配内容
result.index,第一个匹配字符出现的位置
-
-
test()方法
检索字符串中的正则表达式的匹配情况,匹配成功返回true,否则false
RegExpObject.test(string)
- string,必需,被检索的字符串
- string与正则表达式匹配,返回true
- 不匹配,返回false
-
compile()方法
编译指定的正则表达式,正则表达式被多次调用时,提升执行的速度
String与RegExp
三种方法 String对象把RegExp对象 当做 参数:
- search(regExp) 检索与正则表达式匹配的子串
- replace(regExp,replaceText) 替换,正则表达式匹配的内容
- match(regExp) 检索与正则表达式相匹配的信息
自定义对象
定义对象的方式:
- 原始方式
- 构造函数方式
- 原型方式
- 混合方式
- JSON方式
原始方式
步骤:
- 创建一个Object对象
- 为对象添加属性和方法
var object=new Object();
object.propertyName=value;
object.methodName=functionName|function(){}; //事先定义的函数名或匿名函数
代码重复度太高
构造函数方式
步骤:
- 创建构造函数,构造函数名(类名),首字母大写
- new运算符和构造函数创建一个对象
function ClassName([param1],[param2]...){
this.propertyName=value;
...
this.methodName=functionName|function(){};
...
}
- ClassName,类名
- 格式和普通函数基本一样
- 分号(;)隔开
- this,关键字,引用当前对象
原型方式
prototype属性,为对象添加新的属性或方法
object.prototype.name=value;
- object,被扩展对象
- prototype,对象的原型
- name,添加的属性或方法
- value,属性值
混合方式
步骤:
- 构造函数方式 创建 属性
- 原型方式 添加 方法
优势:每个对象创建时都具有独立的属性值,方法所引用的函数只会创建一次
JSON方式
直接创建对象,更简单
{
propertyName:value,
methodName:function(){...}
};
- 之间逗号(,)隔开,最后一项不需要逗号
- 最后有分号(;)
- 方法是由 方法名:匿名函数 构成
-
eval()方式
字符串转换为JSON对象
转换时,需要添加一对括号()
-
Function对象方式
- 第一个参数,列表,传递参数
- 第二个参数,函数的执行体
var movie=(new Function("","return "+movieStr)(); movie.showInfo();