/**
* encodeURI跟encodeURIComponent的區別在於encodeURI不對
* 特殊字符進行編碼如:冒號、前斜杠、問號和英鎊符號.
* 而encodeURIComponent則對它發現的所有非標準字符進行編碼.
*/
var d = "旦旦而學";
//這樣的URL在後臺轉碼獲取過後就可以解決get方式提交的亂碼問題瞭.
<%–var url = "<%=path%>/users.action?name="+encodeURI(d);–%>
//後臺action或者servlet這樣轉碼獲取
//String Name=new String(URLDecoder.decode(request.getParameter("name"),"utf-8"));
alert(encodeURI(d));
alert(encodeURIComponent(d));
/**
* 自然還有解碼方法:decodeURI跟decodeURIComponent
*
*/
alert(decodeURI(encodeURI(d)));
alert(decodeURIComponent(encodeURIComponent(d)));
javaScript——Math:
[javascript]
/**
* 判斷一組數中的最大值
*/
var iMax = Math.max(3,5,56,7,13,79);
alert(iMax);
/**
* 判斷一組數中的最小值
*/
var iMin = Math.min(3,5,56,7,13,79);
alert(iMin);
/**
* 返回數字的絕對值
*/
alert(Math.abs(-9));
[javascript]
/**
* 把小數舍入成整數
* ceil 表示向上取整
* round 常規、4舍5入
* floor 表示向下取整
*/
alert(Math.ceil(25.1)); //out26
alert(Math.round(25.6)); //out26
alert(Math.floor(25.9)); //out25
[javascript]
//常數;一個用作自然對數的底的數學常數,表示為 e。e 的近似值為 2.718281828459045。
//alert(Math.E);
/**
* exp()方法用於把Math.E升到指定的冪(mi)
* log()方法用於返回特定的數字的自然對數
* pow()方法用戶把指定的數字升到指定的冪
* sqrt()返回指定數字的平方根
* acos(x) 返回x的反餘弦值
* asin(x) 返回x的反正弦值
* atan(x) 返回x的反正切值
* atan2(y,x) 返回y/x的反餘弦值
* cos(x) 返回x的餘弦值
* sin(x) 返回x的正弦值
* tan(x) 返回x的正切值
*/
alert(Math.log(Math.exp(12)));
alert(Math.pow(2,10)); //1024
/**
* 數字的平方根就是它的2/1次冪
* 2的2/1次冪就是2的平方根
*/
alert(Math.sqrt(4));
[javascript]
/**
* Math的random()方法
* 該方法返回0到1之間的隨機數、不包括0和1
*/
alert(Math.random());
/**
* 返回iFirstValue到iLastValue的之間(包括)的隨機數
* @param {Object} iFirstValue 起始值
* @param {Object} iLastValue 結束值
* @return {TypeName}
*/
function selectFrom(iFirstValue,iLastValue){
var iChoices = iLastValue – iFirstValue + 1 ;
return Math.floor(Math.random() * iChoices + iFirstValue) ;
}
//返回1到9的隨機數、包括1跟9
alert(selectFrom(1,9));
/**
* 隨機獲取數組中的元素
*/
var array = new Array(45,452,451,4,42,437,343);
alert(array[selectFrom(0,array.length-1)]);
javaScript——創建對象(Object):
類工廠方式:
[javascript]
/**
* 類工廠
*/
function createCar(sColor,iDoors,iMpg){
var oTempCar = new Object;
oTempCar.color = sColor;
oTempCar.doors = iDoors ;
oTempCar.mpg = iMpg ;
oTempCar.showColor = function(){
alert(this.color);
};
return oTempCar ;
}
var oCar1 = createCar("red",5,33);
var oCar2 = createCar("blue",6,23);
alert(oCar1.color);
oCar2.showColor() ;
類工廠方式二:
[javascript]
/**
* 類工廠2
*/
function showColor(){
alert(this.color);
}
function createCar(sColor,iDoors,iMpg){
var oTempCar = new Object;
oTempCar.color = sColor;
oTempCar.doors = iDoors ;
oTempCar.mpg = iMpg ;
oTempCar.showColor = showColor;
return oTempCar ;
}
var oCar1 = createCar("red",5,33);
var oCar2 = createCar("blue",6,23);
alert(oCar1.color);
oCar2.showColor();
構造函數:
[javascript]
/**
* 構造函數
* @param {Object} sColor
* @param {Object} iDoors
* @param {Object} iMpg
* @memberOf {TypeName}
*/
function Car(sColor,iDoors,iMpg){
this.color = sColor;
this.doors = iDoors ;
this.mpg = iMpg ;
this.showColor = function(){
alert(this.color);
};
}
var oCar1 = new Car("red",5,33);
var oCar2 = new Car("blue",6,23);
alert(oCar1.color);
oCar2.showColor();
原型方式:
[javascript]
/**
* 原型方式
*/
function Car(){
}
Car.prototype.color = "red";
Car.prototype.doors = 2 ;
Car.prototype.mpg = 23 ;
Car.prototype.array = new Array(1,2);
Car.prototype.showColor = function(){
alert(this.color);
};
var oCar1 = new Car();
var oCar2 = new Car();
oCar1.color = "blue";
oCar1.array.push(3,4) ;
alert(oCar1.color);
alert(oCar2.color);
//由於Array是引用值、array都指向同樣數組
alert(oCar1.array);
alert(oCar2.array);
聯合使用構造函數和原型方式:
[javascript]
/**
* 聯合使用構造函數和原型方式、就可像用其他程序設計語言一樣創建對象。
* 這種概念非常簡單、即用構造函數定義對象的所有非函數屬性、用原型方式定義對象的函數屬性(方法)。
* 結果所有函數都隻創建一次、而每個對象都具有自己的對象屬性實例。
*/
function Car(sColor,iDoors,iMpg){
this.color = sColor;
this.doors = iDoors ;
this.mpg = iMpg ;
this.array = new Array(1,2);
this.showColor = function(){
alert(this.color);
};
}
Car.prototype.array = function (){
alert(this.color);
};
var oCar1 = new Car("red",5,33);
var oCar2 = new Car("blue",6,23);
oCar1.array.push(4,9);
alert(oCar1.array);
alert(oCar2.array);
動態原型方法:
[javascript]
/**
* 動態原型方法
*/
function Car(sColor,iDoors,iMpg){
this.color = sColor;
this.doors = iDoors ;
this.mpg = iMpg ;
if(typeof Car._initialized == "undefined"){
Car.prototype.showColor = function(){
alert(this.color);
};
Car._initialized = true ;
}
}
var oCar1 = new Car("red",5,33);
var oCar2 = new Car("blue",6,23);
alert(oCar1.color);
oCar2.showColor();
混合工廠方式:
[javascript]
/**
* 混合工廠方式
*/
function Car(){
var oTempCar = new Object;
oTempCar.color = "red";
oTempCar.doors = 2 ;
oTempCar.mpg = 23 ;
oTempCar.showColor = function(){
alert(this.color);
};
return oTempCar ;
}
var oCar1 = new Car();
var oCar2 = new Car();
alert(oCar1.color);
oCar2.showColor();
利用json創建對象:
[javascript]
/**
* 利用json創建對象
*/
var Car = {};
Car.color = "red";
Car.doors = 2;
Car.mpg = 23;
Car.array = new Array(1,2);
Car.showArray = function(){
alert(this.array);
};
var oCar = Car;
oCar.showArray();
目前使用最廣泛的是混合的構造函數/原型方式。此外、動態原型方法也很流行、
在功能上與構造函數/原型方式等價。可采用這兩種方式的任何一種、
不過不要單獨使用經典的構造函數或原型方式、因為這樣會給代碼引入問題。
摘自 旦旦而學的專欄