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