《JavaScript進階程式設計》筆記之’對象基礎’

來源:互聯網
上載者:User

1.對象分類

物件類型有三種:本機物件、內建對象和宿主對象。
(1)本機物件
主要包括:Object,Function,Array,String,Boolean,Number,Date,RegExp,Error等。舉例:

Array類
定義方法:
<1> var aVaulues=new Array(20);

<2> var aColors=new Array();
aColors[0]="red";
aColors[1]="blue";
aColors[2]="green";

<3> var aColors=new Array("red","blue","green");

<4> var aColors=["red","blue","green"];

屬性:
length,方法:toString(),valueOf(),join(),slice(),push(),pop(),shift(),unshift(),splice().

<1> toString()
var aColors=["red","blue","green"];
alert(aColors.toString()); //outputs "red,blue,green"
alert(aColors.valueOf()); //outputs "red,blue,green"
如需逐個字元解析字串,可以這樣:
var sColor="green";
var aColor=sColor.split(""); //***
alert(aColor.toString()); //outputs "g,r,e,e,n"

<2> join()
var aColors=["red","blue","green"];
alert(aColors.join("")); //outputs "redbluegreen"
alert(aColors.join(",")); //outputs "red,blue,green"
alert(aColors.join("-spring-")); //outputs "red-spring-blue-spring-green"

<3> slice()
var aColors=["red","blue","green"];
alert(aColors.slice(0,2)); //outputs "red,blue"

<4> push(),pop()操作字串尾部
var stack =new Array;
stack.push("red");
stack.push("blue","green"); //可以有多個參數 //***
alert(stack.toString()); //outputs "red,blue,green"

var vItem=stack.pop(); //刪除棧頂,並且傳回值//***
alert(vItem);
alert(stack.toString()); //outputs "blue,green"

<5> shift()和unshift()操作字串頭部
var queue=["red","blue","green"];
queue.push("yellow");
queue.shift();
alert(queue.toString()); //outputs "blue,green,yellow"

<6>splice()
var arr=["red","blue","green"];
arr.splice(0,2); //刪除,從第0個位置開始的2字元
arr.splice(1,0,"yellow","black"); //插入,(替換而不刪除)第2個位置字元,如:
alert(arr); //outputs "red,yellow,black,blue,green"
arr.splice(2,1,"yellow","black"); //替換並刪除第2個位置字元

(2)內建對象
內建對象為本機物件子集,ECMAScript定義了兩個內建對象,即Global和Math.
<1>Global對象
Glbal對象屬性有:undefined,NaN,Inifinity等,方法有:isNaN(),isFinite(),paseInt()等等.

encodeURI(),encodeURIComponent(),decodeURI()...
有效URI不能包含某些字元,如空格。所以要編碼,如:
var sUri="http://www.wrox.com/illegal value.htm#start";
alert(encodeURI(sUri));
alert(encodeURIComponent(sUri));
//相對BOM的escape()和unescape()方法,URI方法更可取,因為它們會對所有Unicode符號編碼,BOM方法只
對ASCII符號正確編碼。
<2>Math對象
var iMax=Math.max(2,33,22,9);
alert(iMax);
alert(Math.floor(25.5)); //outputs "25"
alert(Math.ceil(25.5)); //outputs "26"

1~10的隨機數:
var iNum=Math.floor(Math.random()*10+1);//其中"10"指總個數,"1"指從1開始。
2~10的隨機數:
var iNum=Math.floor(Math.random()*9+2);

舉例:隨機選出不同顏色  //***
function selectFrom(iFirstValue, iLastValue) {
    var iChoices = iLastValue - iFirstValue + 1;
    return Math.floor(Math.random() * iChoices + iFirstValue);
}
var aColors = ["red", "green", "blue", "yellow", "black", "purple", "brown"];
var sColor = aColors[selectFrom(0, aColors.length-1)];
alert(sColor);

(3)宿主對象
由宿主環境提供的對象,如BOM,DOM的所有對象。

2.定義對象

建立類的最好方式是用建構函式方式定義屬性,用原型方式定義方法(為避免每次調用建構函式都要建立其內的方法)。

混合(工廠/原型)模式:

為了避免在原廠模式下每次調用建構函式都要建立其內的方法,所以採用此模式,讓方法單獨用原型方式定義。如:

function Car(sColor, iDoors, iMpg) {
    this.color = sColor;
    this.doors = iDoors;
    this.mpg = iMpg;
    this.drivers = new Array("Mike", "Sue");
}

Car.prototype.showColor = function () {
    alert(this.color);
};

var oCar1 = new Car("red", 4, 23);
var oCar2 = new Car("blue", 3, 25);

oCar1.drivers.push("Matt");

alert(oCar1.drivers);    //outputs "Mike,Sue,Matt"
alert(oCar2.drivers);    //outputs "Mike,Sue"

3.修改對象
這部分相當有趣!可以用prototype屬性為任何已有對象建立新方法!如:
Array.prototype.enqueue=function(vItem)//也可以用同樣的辦法重定義已有方法 //***
{
this.push(vItem);
}
也可以為所有本機物件添加新方法,須在Object對象的prototype屬性上定義它。如:
Object.prototype.showValue=function()
{
alert(this.valueOf());
}
var str="hello";
alert(str.showValue()); //outputs "hello"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.