2012-09-09 15:27 by mrlaker, 391 阅读, 0 评论, 收藏, 编辑
引用类型是一种数据结构,它与真正的类是不一样的。Js中的对象是某个特定引用类型的实例。
创建Object实例的两种方式:
1。new操作符(调用Object构造函数)
var person = new Object();
2。对象字面量表示法(不会调用Object构造函数)
var person = {
name : "Laker", //用逗号分隔开
age : 22
}
定义包含默认属性和方法的对象:
var = person();
访问对象属性:
person[“name”]; //方括号语法
person.name; //点表示法
Array类型
数组每一项可以保存任何类型的数据,常量,函数都可以
数组的大小可以动态调整(push,pop,shift,unshift,slice,splice)
创建数组:
var colors = new Array(); //空数组
var colors = new Array(20); //包含20个初始值为undefined的数组
var colors = new Array("red","blue","green"); //包含3个字符串的数组
var names = new Array("Greg"); //参数是数字,作个数处理,是其他类型的,把传入的参数作为键名
可以把关键字new省略
var colors = ["red","blue","green"]; //元素值,不是键名
var name = []; //空数组
数组自动增长:
var colors = ["red","blue","green"];
colors[99] = "black";
alert(colors.length); //100,其他位置被填充为undefined
数组最多可以有4 294 967 295项
数组的转换方法
toString():将数组中每个值拼接成一个字符串,值之间用逗号分隔,其实是对数组中的每一个元素调用toString方法
valueOf(),toLocaleString():作用和toString相似
改变分割符:
值与值之间改用其他分隔符分割而不要用逗号,可使用join函数
colors.join("||"); //red||blue||green
栈方法
push():增加一项或多项并返回数组修改后的长度
pop():弹出末尾的值并返回该值
队列方法:
shift():移出第一项并返回该项
unshift():在前面增加一项或多项并返回新长度
重排序方法:
reverse():反转数组
sort():默认升序,支持比较函数作为参数
操作方法:
concat():数组拼接,将一个或多个数组的每一项添加到数组中
slice():基于当前数组的一项或多项创建数组
splice():删除,插入,替换数组中的元素
colors.splice(0,2); //删除前两项
colors.splice(2,0,"red","green"); //在位置2插入两项
colors.splice(2,1,"red","green"); //删除位置2的项,插入两项
Date类型
创建一个日期对象:
var now = new Date(); //自动获得当前时间,自1970.1.1零时到当前的毫秒数
parse()函数根据一个日期字符串创建一个Date对象
var someDate = new Date(Date.parse("May 25, 2004"));
var someDate = new Date("May 25,2004"); //与上面等价,自动调用parse函数
输入非法的日期字符串时不同的浏览器会有不同的处理方法
Date类型和其他引用类型一样,重写了toString,toLocaleString,valueOf函数,返回格式因浏览器而异
日期类型的格式化方法
toDateString():星期,月,日,年
toLocaleDateString():特定地区的星期,月,日,年
toTimeString():时,分,秒,时区
toLocaleTimeString():时,分,秒
toUTCString():格式完整的UTC日期(同toGMTString)
日期/时间组件方法用于直接取得和设置日期中的特定的部分
RegExp类型
用于支持正则表达式
正则表达式支持3个模式标志
g-全局模式,发现第一个匹配项后继续匹配
i-不区分大小写
m-多行模式
RegExp实例的属性:
global-是否设置g标志
ignoreCase-是否设置了i标志
multiline-是否设置了m标志
sourse-正则表达式的字符串表示(含转义反斜杆)
lastIndex-整数,开始否夫哦下一个匹配项的字符位置,从0算起
exec(text)函数
text为应用模式的字符串,返回一个匹配项数组matches
matches.index:匹配项在字符串中的位置
matches.input:应用正则的字符串
RegExp构造函数的属性:
Input:最近一次要匹配的字符串
laseMatch:最近一次匹配项
laseParen:最近一次捕获组
leftContext:Input字符串中lastMatch之前的文本
multiline:是否使用多行模式
rightContext:Input字符串中lastMatch之后的文本
Function类型
函数实际上也是对象
两种函数定义方法:
函数声明语法定义:
function sum(num1,num2)
{
return num1+num2;
}
函数表达式定义:
var sum = function sum(num1,num2)
{
return num1+num2;
}; //分号结尾
Javascript中没有函数重载的概念,函数只能被重写。函数名实际上只是一个指针
js中也能实现函数的嵌套
函数的两个特殊对象
arguments
包含着传入函数中的所有参数,它有一个callee属性,指向拥有这个arguments的函数,即arguments.callee()和原函数相同
this
函数在执行时所处的作用域
函数的属性
length:函数希望接收的命名参数的个数
prototype:保存引用类型所有实例方法的真正所在(不懂?)
函数的方法(暂时还不理解)
apply()
call()
基本包装类型
当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而可以调用一些方法来操作这些数据
var s1 = "some text";
var s2 = s1.substring(2); //s1是字符串,但是它可以调用substring方法,调用之后会被自动销毁
引用类型和基本包装类型的主要区别就是对象的生存期
String类型
访问string中的字符:
charAt(index):返回index处的字符
charCodeAt(index):返回index处字符的编码(?)
有些浏览器支持下标访问:
stringValue[1]
更多String类型的操作方法还是找个参考手册看看比较详细
Global对象
它是一个终极对象,不属于任何其他对象的属性和方法,最终都是它的属性和方法,全局作用域中的属性和方法都属于它。比如Array,Date,Object,Function,Error等
eval()
eval方法就像一个完整的javascript的解析器,只有一个参数,为将要执行的js代码字符串。它能够解析代码字符串的功能非常强大,但也非常危险,恶意用户可能使用它进行代码注入攻击。
js没有指出如何访问Global对象,但可以通过window对象来访问,全局函数和全局变量都是window对象的属性
var color = "red";
function sayColor(){
alert("window.color");
}
window.sayColor(); //red