建立Object執行個體的方式有2種:
var person = new Object();
person.name = “lala”
person.age=18;
或者對象字面量的方法(更推薦這個方法,達到一種封裝)
var person = {
name : "lala",
age : 18;
};
裡面的name和age也可以加""
弄個例子,這個比較常用吧
function displayInfo(args){
var output = “”;
if (typeof args.name == “String”){
output += “Name:”+args.name+"\n";
}
if (typeof args.age == “Number”){
output += “Age:”+args.age+"\n";
}
alert(output);
}
dispalyInfo({
name:“lala”,
age:18,
toString : function(){
return name+"Age:"+age;
}
});
通路對象屬性的時候,我們可以采用方括号的形式[]
例如:
alert(person[“name”]);
這種通路方式的優點是,可以通過變量名來通路
我們還是建議采用點表示法。
Array類型
大小随便,每個數組的元素類型也随便
建立:
var colors = new Array();
或者
var colors = new Array(10); //包含10項的數組
或者
var colors = new Array(“Blue”,“Red”,“Green”);
或者不需要new
var colors = [“Blue”,“Red”,“Green”];
通路:
alert(colors[0]); //顯示Blue
增
colors[3]=“Yellow”; //增加第4項
改
colors[1]=“Black”; //替換Red為Black
數組的length屬性儲存着該數組的項數
這個屬性很有意思,不隻是讀得
例如
var colors = [“Blue”,“Red”,“Green”];
colors.length = 2;
alert(colors[2]); //undefined
是以利用該屬性,我們可以在末尾增加新的元素
例如:
var colors = [“Blue”,“Red”,“Green”];
colors[colors.length] = “Black”;
數組别太長了,要不然會導緻運作時間超長的腳本錯誤
檢測數組:
if (value instanceof Array){
…
}
instanceof操作符的問題在于,它假定單一的全局執行環境。如果網頁中包含多個架構,那麼實際上就存在兩個以上不同的全局執行環境,進而存在兩個以上不同版本的Array構造函數。如果你從一個架構向另外一個架構傳入一個數組,那麼傳入的數組與第二個架構中原生建立的數組分别具有不同的構造函數
是以我們可以用Array.isArray()函數來判斷一個值是不是數組
if(Array.isArray(value){
…
}
使用toString函數把數組的每個項,用,來串起來
使用join函數,也把數組的每個項,用join(***)中的***來串起來
棧方法的數組增删
push(可以多個參數) 傳回目前數組長度
pop(無參數) 傳回被删除的最後一項
隊列放到的數組增删
push(可以多個參數) 傳回目前數組長度
shift() 傳回被删除的最前一項
數組重排序方法:
reverse() //反轉數組
function compare(value1,value2){
if(value1 < value2){
return -1;
}else if {
return 1;
}else{
return 0;
}
}
var values = [0,2,7,1,6];
values.sort(compare);
alert(values); //顯示0,1,2,6,7
concat函數,被複制的數組不會發生變化
用來數組數組連接配接,例如:
var colors = [“red”,“green”,“blue”];
var colors2 = colors,concat(“yellow”,[“black”,brown"]);
alert(colors2); //red,green,blue,yellow,black,brown
slice函數,複制數組的某段連續的元素
例如:
var colors = [“red”,“green”,“blue”,“black”];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,3);
alert(colors2); //green;
alert(colors3); //green,blue
如果是這種情況的話(負數),請加上數組的長度,再弄
例如:
如果數組長度為5
slice(-2,-1);
與slice(3,4)是一樣的
splice函數
删除splice(0,5),2個參數
第一個參數是開始,第二個參數是從第一個參數開始,删除多少個
插入splice(2,1,“red”,“blue”,“green”);3個參數
一個參數是開始,第二個參數删除多少個,第三或者四或者5個參數則是在2開始插入元素
替換也是一樣?