javascript 引用类型学习笔记

时间:2022-01-24 14:20:00

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