1.引用类型是一种数据结构,从技术上讲是一门面向对象的语言,通常称为类。从技术角度来说是一门面向对象的语言,但它不具备传统面向对象语言所支持的类和接口等基本结构。
2.创建Object实例的方式有两种:
a. 用new操作符后跟Object构造函数
var person = new Object();
person.name = "xcp";
person.age = 23;
b. 另一种方式是使用对象
字面量表示法
var person = {
name:'xcp';
age:23;
}
或者
var person={}
person.namge="xcp";
person.age=23;
3.创建Array数组有两种方法:
a. 使用Array的构造函数
var colors = new Array();
var colors = new Array(20);
var colors = {"red","blue","green"}
//每一个数组元素的初始值都是
undefined;
b. 使用数组
字面量方法
var colors = Array(20);
var colors = ["red","blue","green"];
4.使用Array的常用方法:
a. 栈操作方法(后进先出):push 推入,pop 弹出
var colors=["red","blue"];
colors.push("green"); //推入一项
colors[4]="block";
alert(colors.length); //4
var temp = colors.pop();
alert(temp); //block
alert(colors.length);//3
b. 对列方法(先进先出):push推入,shift取出, unshift塞入
var colors=["red","blue"];
colors.push("green"); //推入一项
colors[4]="block";
alert(colors.length); //4
var temp = colors.shift();
alert(temp); //red
alert(colors.length);//3
unshift和shift的功能刚好相反:他是在第一位添加数据项
var colors = new Array();
var count = colors.unshift("red","green");
alert(count); //2
colors.unshift("block");
var item = colors.pop();
alert(item); //green
alert(colors.length);
c. 重排序方法:reverse()和sort()
var values=[1,2,3,4,5,6];
values.reverse();
alert(values); //6,5,4,3,2,1
//注意sort方法会调用
每个数组的toString()转型方法,然后得到字符串,然后再排序,就会出现以下情况:
var values = [0,15,1,10,5];
values.sort();
alert(values); //0,1,10,15,5
//不用说这种sort方法肯定不是最佳的方式。因此sort方法可以接收一个比较函数作为参数,和java的Comparable一样的作用.
function compare(value1,valu2){
if(value1 < value2){
return -1;
}else if(value > value2){
return 1;
}else{
return 0;
}
}
values.sort(compare);
alert(values); //0,1,5,10,15
d. 常用方法
concat:两个或更多数组组合而成的
join:返回字符串值,其中包含了连接到一起的数组的所有元素 values.join(",") 0,1,5,10,15
slice:返回一个数组的一段 values.slice(0,2);
splice:从一个数组中移除一个或多个元素 values.splice(0,2);
valueOf:返回指定对象的原始值
5.使用Data类型
a. 创建日期对象
var now = new Date();
var someData = new Date(Data.parse("May 25,2005"));
var someData = new Date("May 25,2005");
6.使用RegExp对象
a. 创建RegExp对象(
字面量方式创建)
var expression = /pattern/flags;
这里面的
pattern 就是就行匹配的正则表达示
这时面的flags包括以下几种:
g,i,m g:表示全局模式(global),则将模式应用于所有字符串,而并非发现第一个匹配项就立刻停止。
i:表示不区分大小写(case-insensitive),
m:表示多行模式(mutiline),即达到一行末尾时还会继续查找下一行是否存在匹配项
例:var at = /at/g; 匹配at
var at2 = /[bc]at/gi; 匹配bat,cat。。。。并且不区分大小写
var at3 = /.at/gi; 分有以at结尾的3个字母的字符串
注:
以下是javascript里面的转义字符:(){}[]\|/^$.?*+ 转义方法:加\ 。如\\ \$
var at4 = /\.at/gi; 所有.at,不区分大小写
b. 使用RegExp构造函数创建
它接受两个参数:一个是要匹配的字符串模式,可选的标志字符串。
var at5 = new RegExp("[bc]at","i");
由于RegExp函数模式的参数是字符串,所以在某些情况下要对字符串进行
双重转义,如:
c. RegExp的属性
>global:返回true/false,返回是否设置了g标志
>ignonecase:返回true/false,返回是否设置了i标志
>mutiline:返回true/false,返回是否设置了m标志
>lastIndex:开始搜索下一个匹配的位置,从0开始
>source:返回正则表达示
d. RegExp的方法
>
exec方法
var text = "mom and dad and bady";
var p = /mon( and dad( and bady)?)?/gi;
var m = p.exec(text); //返回匹配器
alert(m.index); //0
alert(m.input);//mom and dad and bady
alert(
m[0]);//mom and dad and bady 相当于group(0)
alert(
m[1]);// and dad and bady 相当于group(1)
alert(
m[2]);// and bady 相当于group(2)
>
test方法 通常用于if语句,如果匹配返回true,否则返回false
var test="000-00-0000";
var p = /\d{3}-\d{2}-\d{4}/;
if(p.test(test)){alert("dd");}
f. Function类型
a.函数的声明
function test(index){}
var test = function(index){}
var test = new Function(index){} //不推荐
注:
>函数没有重载功能,如果两个函数一样,他会直接将前面的方法
b. 函数内部属性
this和arguments
c. 每个函数都包括
length和prototype属性
length:接受参数的个数
prototype:原型对象,很重要
d. 每个函数都有两个非继承的方法:
apply()和call()方法
>这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。
>首先,apply方法接受两个参数:一个是在其中运行函数的作用域,另一个是参数数据(可以是Array实例,也可以是arguments对象)
function sum(num1,num2){
return num1+num2;
}
function callsum1(num1,num2){
return sum.apply(this,arguments); //传入arguments对象
}
function callsum2(num1,num2){
return sum.apply(this,[num1,num2]); //传入数组
}
alert(callSum1(10,10)); //20
alert(callSum2(10,10)); //20
>call()方法与apply()方法的作用相同,它们的区别仅在于接收参数的方式不同。对于call()方法来言,第一个参数是作用域没有变量 ,变化的只是其余参数都是直接 传递跟函数的。
function callSum3(num1,num2){
return sum.call(this,num1,num2);
}
alert(callSum3(10,10));//20
//所以apply()和call()使用就看怎么使用方便来用了,如我们传入的参数就是要传调用的函数的参数,就可以直接作用apply(this,arguments);
>真正强大的地方是能够
扩充函数赖以运行的作用域<就是在后面运行的函数的作用域就是我传进的作用域>
window.color = "red";
var o={color:"blue"}
function getColor(){
alert(this.color);
}
getColor(); //red
getColor.call(this); //red
getColor.call(widow); //red;
getColor.call(0); //blue;
g.Boolean类型
a. 声明
var b = true;
var b = new Boolean(true);
alert(b instanceof Boolean); //true
h.Number类型
a. 声明
var b1 = 2;
var b2 = new Number(2);
var b3 = (Number)"2";
i.String类型
a. 声明
var s1 = "dd";
var s2 = new String("dd');
b. 常用方法
charAt,concat, substring,indexOf,toLowerCase,toUpperCase等
j.
常用内置对象 a. URI编码方法:encodeURI()和encodeURIComponent(常用)
比较:encodeURI()用于整个URL;encodeURIComponent用于URL中的某段进行编码
encodeURI不会对本身的URL特殊字符进行编码,例如冒号,正斜杠,问号和#号;而encodeURIComponent对所有非标准字符都要进行编码
b. URL解码方法:decodeURI()和decodeURIComponent,基本操作同上
c. isNan(), parseInt(), parseFloat()
d.
eval()---功能最强大的一个方法
ECMAScript内部解析器一样
e. Window对象
f. Math类
min,max, ceil,floor,round,random