JavaScript 對象總結
JavaScript 中的所有事物都是對象:字符串、數值、數組、函數...
此外,JavaScript 允許自定義對象
JavaScript 對象
對象隻是一種特殊的數據。對象擁有屬性和方法
訪問對象的屬性
屬性是與對象相關的值。訪問對象屬性的語法是:
objectName.propertyName
下麵這個例子使用了 String 對象的 length 屬性來獲得字符串的長度:
var message="Hello World!";
var x=message.length;
訪問對象的方法
方法是能夠在對象上執行的動作。可以通過以下語法來調用方法:
objectName.methodName()
下麵這個例子使用了 String 對象的 toUpperCase() 方法來將文本轉換為大寫:
var message="Hello world!";
var x=message.toUpperCase();
創建 JavaScript 對象
通過 JavaScript,您能夠定義並創建自己的對象
創建新對象有兩種不同的方法:
1.定義並創建對象的實例
下麵這個例子創建了對象的一個新實例,並向其添加了三個屬性:
person=new Object();
person.firstname="John";
person.age=50;
person.eyecolor="blue";
替代語法(使用對象 literals):
person={firstname:"John",age:50,eyecolor:"blue"};
2.使用函數來定義對象,然後創建新的對象實例
下麵的例子使用函數來構造對象:
function person(firstname,age,eyecolor){
this.firstname=firstname;
this.age=age;
this.eyecolor=eyecolor;
}
在JavaScript中,this通常指向的是我們正在執行的函數本身,或者是指向該函數所屬的對象(運行時)
創建 JavaScript 對象實例
一旦您有了對象構造器,就可以創建新的對象實例,就像這樣:
var myFather=new person("John",50,"blue");
var myMother=new person("Sally",48,"green");
把屬性添加到 JavaScript 對象
您可以通過為對象賦值,向已有對象添加新屬性:
假設 personObj 已存在 - 您可以為其添加這些新屬性:firstname、age 以及 eyecolor:
person.firstname="John";
person.age=30;
person.eyecolor="blue";
把方法添加到 JavaScript 對象
方法隻不過是附加在對象上的函數。在構造器函數內部定義對象的方法:
function person(firstname,age,eyecolor)
{
this.firstname=firstname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.firstname=name;
}
}
myMother=new person("Sally",48,"green");
myMother.changeName("Doe");
document.write(myMother.firstname);
JavaScript 類
JavaScript是麵向對象的語言,但JavaScript不使用類
在 JavaScript 中,不會創建類,也不會通過類來創建對象(就像在其他麵向對象的語言中那樣)
JavaScript 基於 prototype,而不是基於類的
JavaScript for...in 循環
JavaScript for...in 語句循環遍曆對象的屬性
for (variable in object){
code to be executed
}
注意: for...in 循環中的代碼塊將針對每個屬性執行一次
JavaScript Number 對象
JavaScript 數字
JavaScript 隻有一種數字類型。可以使用也可以不使用小數點來書寫數字
var pi=3.14; // 使用小數點
var x=34; // 不使用小數點
極大或極小的數字可通過科學(指數)計數法來寫:
var y=123e5; // 12300000
var z=123e-5; // 0.00123
所有 JavaScript 數字均為 64 位
所有 JavaScript 數字均為 64 位
在JavaScript中,數字不分為整數類型和浮點型類型,所有的數字都是由浮點型類型。JavaScript采用IEEE754標準定義的64位浮點格式表示數字,它能表示最大值為±1.7976931348623157 x 10308,最小值為±5 x 10 -324
精度
整數(不使用小數點或指數計數法)最多為 15 位。小數的最大位數是 17,但是浮點運算並不總是 100% 準確:
var x = 0.2+0.1; // result will be 0.30000000000000004
八進製和十六進製
如果前綴為 0,則 JavaScript 會把數值常量解釋為八進製數,如果前綴為 0 和 "x",則解釋為十六進製數
var y = 0377; //255
var z = 0xFF;//255
絕不要在數字前麵寫零,除非您需要進行八進製轉換
默認情況下,JavaScript 數字為十進製顯示。但是你可以用toString()方法 輸出16進製、8進製、2進製
var myNumber=128;
myNumber.toString(16); // returns 80
myNumber.toString(8); // returns 200
myNumber.toString(2); // returns 10000000
無窮大(Infinity)
當數字運算結果超過了JavaScript所能表示的數字上限(溢出),結果為一個特殊的無窮大(infinity)值,在JavaScript中以Infinity表示。同樣地,當負數的值超過了JavaScript所能表示的負數範圍,結果為負無窮大,在JavaScript中以-Infinity表示。無窮大值的行為特性和我們所期望的是一致的:基於它們的加、減、乘和除運算結果還是無窮大(當然還保留它們的正負號)。
myNumber=2;
while (myNumber!=Infinity){
myNumber=myNumber*myNumber;
document.write(myNumber +'<BR>');
}//4 16 256 65536 4294967296 18446744073709552000 3.402823669209385e+38 1.157920892373162e+77 1.3407807929942597e+154 Infinity
除以0也產生了無限:
var x = 2/0; //Infinity
var y = -2/0; //-Infinity
NaN - 非數字值
NaN 屬性是代表非數字值的特殊值。該屬性用於指示某個值不是數字。可以把Number對象設置為該值來指示其不是數字值。
可以使用 isNaN() 全局函數來判斷一個值是否是 NaN 值
var x = 1000 / "Apple";
isNaN(x); // returns true
var y = 100 / "1000";
isNaN(y); // returns false
除以0是無窮大,無窮大也是一個數字
數字可以是數字或者對象
數字可以私有數據進行初始化,就像 x = 123;
JavaScript 數字對象初始化數據, var y = new Number(123);
var x = 123;
var y = new Number(123);
typeof(x) // returns Number
typeof(y) // returns Object
數字屬性
MAX_VALUE - 最大值
MIN_VALUE - 最小值
NEGATIVE_INFINITY - 負無窮大
POSITIVE_INFINITY - 正無窮大
NaN - 非數字
Number.prototype - 運行您向對象添加屬性和方法。當構造一個屬性 所有Number對象將被添加上該屬性及值。當構造一個方法所有Number對象都會有這個方法。Number.prototype不允許引用一個單獨的Number對象但是可以使用Number()對象。prototype 型是一個全局對象的構造函數,可用於所有的JavaScript對象
object.prototype.name=value // 語法
//例子
Number.prototype.myMet=function(){
this.myProp=this.valueOf()/2;
}
var n = new Number(55);
n.myMet();
var x = n.myProp;
object.constructor - 返回對創建此對象的數組函數的引用
function employee(name,job,born){
this.name=name;
this.job=job;
this.born=born;
}
var bill=new employee("Bill Gates","Engineer",1985);
document.write(bill.constructor); //function employee(name,job,born) { this.name=name; this.job=job; this.born=born; }
數字方法
NumberObject.toExponential(num):把Number轉換成指數計數法,num表示小數點後保留幾位
NumberObject.toFixed(num):把Number四舍五入為指定小數位數的數字
NumberObject.toPrecision(num):在對象的值超出指定位數時將其轉換為指數計數法,num指定有效數字的位數。如果沒有提供precision參數或其值為undefined,則將轉而調用toString()方法進行處理。如果提供了參數,則參數precision必須介於 [1, 21] 之間,否則將報錯。如果數字的有效位數大於precision,將會根據第precision + 1位的有效數字進行四舍五入
NumberObject.toString():不加參數表示把數字轉化為字符串,也可以加上幾進製的參數進行轉化
NumberObject.valueOf():可以把字符串轉化為數字
JavaScript 字符串
String 對象用於處理已有的字符塊。
JavaScript 字符串
一個字符串可以使用單引號或雙引號:
var carname="Volvo XC60";
var carname='Volvo XC60';
使用位置(索引)可以訪問字符串中任何的字符:
var character=carname[7];
字符串的索引從零開始, 所以字符串第一字符為 [0],第二個字符為 [1]
可以在字符串中使用引號
var answer="It's alright";
var answer="He is called 'Johnny'";
var answer='He is called "Johnny"';
或者可以在字符串中使用轉義字符使用“\”:
var answer='It\'s alright';
var answer="He is called \"Johnny\"";
字符串(String)
字符串(String)使用長度屬性length來計算字符串的長度:
var txt="Hello World!";
document.write(txt.length);
在字符串中查找字符串
字符串使用 indexOf() 來定位字符串中某一個指定的字符首次出現的位置:
var str="Click the button to locate where "locate" first occurs.";
var n=str.indexOf("locate"); //20
如果沒找到對應的字符函數返回-1
lastIndexOf() 方法在字符串末尾開始查找字符串出現的位置
內容匹配
match()函數用來查找字符串中特定的字符,並且如果找到的話,則返回這個字符
var str="Hello world!";
document.write(str.match("world") + "<br>"); //world
document.write(str.match("World") + "<br>"); //null
document.write(str.match("world!")); //world!
替換內容
replace() 方法在字符串中用某些字符替換另一些字符
str="Please visit Microsoft!"
var n=str.replace("Microsoft","w3cschool"); //Please visit w3cschool!"
字符串大小寫轉換
字符串大小寫轉換使用函數 toUpperCase() / toLowerCase():
var txt="Hello World!"; // String
var txt1=txt.toUpperCase(); // txt1 is txt converted to upper
var txt2=txt.toLowerCase(); // txt2 is txt converted to lower
字符串轉為數組
字符串使用strong>split()函數轉為數組:
txt="a,b,c,d,e" // String
txt.split(","); // Split on commas
txt.split(" "); // Split on spaces
特殊字符
Javascript 中可以使用反斜線(\)插入特殊符號,如:撇號,引號等其他特殊符號
var txt="We are the so-called "Vikings" from the north.";
在JavaScript中,字符串的開始和停止使用單引號或雙引號。這意味著,上麵的字符串將被切成: We are the so-called。解決以上的問題可以使用反斜線來轉義引號:
var txt="We are the so-called \"Vikings\" from the north.";
JavaScript將輸出正確的文本字符串:We are the so-called "Vikings" from the north.
下表列出其他特殊字符,可以使用反斜線轉義特殊字符:
代碼 | 輸出 |
---|---|
\' | 單引號 |
\" | 雙引號 |
\ | 斜杆 |
\n | 換行 |
\r | 回車 |
\t | tab |
\b | 空格 |
\f | 換頁 |
字符串屬性和方法
屬性:
length - 計算字符串的長度
prototype - 同number
constructor - 同number
方法:
charAt() - 返回指定位置的字符
charCodeAt() - 返回指定位置的字符的 Unicode 編碼
concat() - 多個字符串的連接
fromCharCode() - 根據Unicode編碼返回一個字符串
indexOf() - 定位字符串中某一個指定的字符首次出現的位置
lastIndexOf() - 在字符串末尾開始查找字符串出現的位置
match() - 查找字符串中特定的字符,並且如果找到的話,則返回這個字符
replace() - 在字符串中用某些字符替換另一些字符
search() - 檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,查到後返回字符串首字母位置
stringObject.slice(start,end) - 可提取字符串的某個部分,並以新的字符串返回被提取的部分,允許使用負數作為參數
split() - 字符串以某標誌分割轉為數組
stringObject.substr(start,length) - 在字符串中抽取從start下標開始的指定數目的字符
stringObject.substring(start,stop) - 提取字符串中介於兩個指定下標之間的字符,不接受負的參數
toLowerCase() - 字符串轉為小寫
toUpperCase() - 字符串轉為大寫
stringObject.valueOf() - 返回 Object 參數的字符串形式,如果參數為 “null”,返回“null”,否則返回objtoString()的值
JavaScript Date(日期)對象
日期對象用於處理日期和時間
Date() 方法 - 返回當日的日期和時間
var d=new Date();
document.write(d); //Fri Jun 02 2017 11:39:29 GMT+0800
getFullYear() - 獲取年份
var d = new Date().getFullYear(); //2017
getTime() - 返回從 1970 年 1 月 1 日至今的毫秒數
var d = new Date().getTime(); //1496374883302
setFullYear() - 設置具體的日期
var d = new Date().setFullYear(2020,10,3); //Tue Nov 03 2020 11:42:29 GMT+0800
toUTCString() - 將當日的日期(根據 UTC)轉換為字符串
var d = new Date().toUTCString(); //Fri, 02 Jun 2017 03:42:39 GMT
getDay() - 顯示星期
var d = new Date().getDay(); //5
Date 對象屬性
屬性 | 描述 |
---|---|
constructor | 返回對創建此對象的 Date 函數的引用 |
prototype | 使您有能力向對象添加屬性和方法 |
JavaScript constructor 屬性
返回創建Date對象的函數原型:
myDate.constructor;
constructor 屬性返回對創建此對象的 Date 函數的引用
function myFunction(){
var d = new Date();
document.write(d.constructor);
} //function Date() { [native code] }
JavaScript Date prototype 屬性
prototype 屬性使您有能力向對象添加屬性和方法。當構造一個原型,所有的日期對象都會默認添加屬性和方法。
注意: 可將屬性和方法添加到原型中,但不能為對象分配其他原型。 但是可以向用戶定義的對象分配新的原型。Prototype是一個全局屬性,這對於幾乎全部的JavaScript對象
Date.prototype.myMet=function(){
if (this.getMonth()==3){this.myProp="四月"};
if (this.getMonth()==4){this.myProp="五月"};
if (this.getMonth()==5){this.myProp="六月"};
}
function myFunction(){
var d = new Date();
d.myMet();
document.write(d.myProp);
} //function Date() { [native code] }
Date 對象方法
方法 | 描述 |
---|---|
getDate() | 從 Date 對象返回一個月中的某一天 (1 ~ 31) |
getDay() | 從 Date 對象返回一周中的某一天 (0 ~ 6) |
getFullYear() | 從 Date 對象以四位數字返回年份 |
getHours() | 返回 Date 對象的小時 (0 ~ 23) |
getMilliseconds() | 返回 Date 對象的毫秒(0 ~ 999) |
getMinutes() | 返回 Date 對象的分鍾 (0 ~ 59) |
getMonth() | 從 Date 對象返回月份 (0 ~ 11) |
getSeconds() | 返回 Date 對象的秒數 (0 ~ 59) |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒數 |
getTimezoneOffset() | 返回本地時間與格林威治標準時間 (GMT) 的分鍾差 |
getUTCDate() | 根據世界時從 Date 對象返回月中的一天 (1 ~ 31) |
getUTCDay() | 根據世界時從 Date 對象返回周中的一天 (0 ~ 6) |
getUTCFullYear() | 根據世界時從 Date 對象返回四位數的年份 |
getUTCHours() | 根據世界時返回 Date 對象的小時 (0 ~ 23) |
getUTCMilliseconds() | 根據世界時返回 Date 對象的毫秒(0 ~ 999) |
getUTCMinutes() | 根據世界時返回 Date 對象的分鍾 (0 ~ 59) |
getUTCMonth() | 根據世界時從 Date 對象返回月份 (0 ~ 11) |
getUTCSeconds() | 根據世界時返回 Date 對象的秒鍾 (0 ~ 59) |
getYear() | 已廢棄。 請使用 getFullYear() 方法代替 |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒數 |
setDate() | 設置 Date 對象中月的某一天 (1 ~ 31) |
setFullYear() | 設置 Date 對象中的年份(四位數字) |
setHours() | 設置 Date 對象中的小時 (0 ~ 23) |
setMilliseconds() | 設置 Date 對象中的毫秒 (0 ~ 999) |
setMinutes() | 設置 Date 對象中的分鍾 (0 ~ 59) |
setMonth() | 設置 Date 對象中月份 (0 ~ 11) |
setSeconds() | 設置 Date 對象中的秒鍾 (0 ~ 59) |
setTime() | setTime() 方法以毫秒設置 Date 對象 |
setUTCDate() | 根據世界時設置 Date 對象中月份的一天 (1 ~ 31) |
setUTCFullYear() | 根據世界時設置 Date 對象中的年份(四位數字) |
setUTCHours() | 根據世界時設置 Date 對象中的小時 (0 ~ 23) |
setUTCMilliseconds() | 根據世界時設置 Date 對象中的毫秒 (0 ~ 999) |
setUTCMinutes() | 根據世界時設置 Date 對象中的分鍾 (0 ~ 59) |
setMilliseconds() | 設置 Date 對象中的毫秒 (0 ~ 999) |
setUTCMonth() | 根據世界時設置 Date 對象中的月份 (0 ~ 11) |
setUTCSeconds() | 根據世界時 (UTC) 設置指定時間的秒字段 |
setYear() | 已廢棄。請使用 setFullYear() 方法代替 |
toDateString() | 把 Date 對象的日期部分轉換為字符串 |
toGMTString() | 已廢棄。請使用 toUTCString() 方法代替 |
toISOString() | 使用 ISO 標準返回字符串的日期格式 |
toJSON() | 以 JSON 數據格式返回日期字符串 |
toLocaleDateString() | 根據本地時間格式,把 Date 對象的日期部分轉換為字符串 |
toLocaleTimeString() | 根據本地時間格式,把 Date 對象的時間部分轉換為字符串 |
toLocaleString() | 據本地時間格式,把 Date 對象轉換為字符串 |
toString() | 把 Date 對象轉換為字符串 |
toTimeString() | 把 Date 對象的時間部分轉換為字符串。 |
toUTCString() | 根據世界時,把 Date 對象轉換為字符串 |
UTC() | 根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數 |
valueOf() | 返回 Date 對象的原始值 |
JavaScript Array(數組)對象
數組對象是使用單獨的變量名來存儲一係列的值
什麼是數組?
數組可以用一個變量名存儲所有的值,並且可以用變量名訪問任何一個值
數組中的每個元素都有自己的的ID以便它可以很容易地被訪問到
創建一個數組
創建一個數組,有三種方法。下麵的代碼定義了一個名為 myCars的數組對象:
1: 常規方式:
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
2: 簡潔方式:
var myCars=new Array("Saab","Volvo","BMW");
3: 字麵:
var myCars=["Saab","Volvo","BMW"];
訪問數組
通過指定數組名以及索引號碼,可以訪問某個特定的元素。
以下實例可以訪問myCars數組的第一個值:
var name=myCars[0];
以下實例修改了數組 myCars 的第一個元素:
myCars[0]="Opel";
在一個數組中你可以有不同的對象
所有的JavaScript變量都是對象。數組元素是對象。函數是對象。因此,你可以在數組中有不同的變量類型。可以在一個數組中包含對象元素、函數、數組:
myArray[0]=Date.now;
myArray[1]=myFunction;
myArray[2]=myCars;
數組方法和屬性
使用數組對象預定義屬性和方法:
var x=myCars.length // the number of elements in myCars
var y=myCars.indexOf("Volvo") // the index position of "Volvo"
創建新方法 - prototype
Array.prototype.myUcase=function(){
for (i=0;i<this.length;i++){
this[i]=this[i].toUpperCase();
}
}
function myFunction(){
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.myUcase();
document.write(fruits);
}
Array 對象方法
方法 | 描述 |
---|---|
concat() | 連接兩個或更多的數組,並返回結果 |
every() | 檢測數組元素的每個元素是否都符合條件 |
filter() | 檢測數組元素,並返回符合條件所有元素的數組 |
indexOf() | 搜索數組中的元素,並返回它第一次出現的位置 |
join() | 把數組的所有元素放入一個字符串 |
lastIndexOf() | 返回一個指定字符串值最後出現的位置 |
map() | 通過指定函數處理數組的每個元素,並返回處理後的數組 |
pop() | 刪除數組的最後一個元素並返回刪除的元素 |
push() | 向數組的末尾添加一個或更多元素,並返回新的長度 |
reverse() | 反轉數組的元素順序 |
shift() | 刪除並返回數組的第一個元素 |
slice(start,end) | 選取數組的的一部分,並返回一個新數組,可以為負數 |
some() | 檢測數組元素中是否有元素符合指定條件 |
sort() | 對數組的元素進行排序 |
splice() | 從數組中添加或刪除元素 |
toString() | 把數組轉換為字符串,並返回結果 |
unshift() | 向數組的開頭添加一個或更多元素,並返回新的長度 |
valueOf() | 返回數組對象的原始值 |
every() 方法
every()方法用於檢測數組所有元素是否都符合指定條件(通過函數提供)。如果數組中檢測到有一個元素不滿足,則整個表達式返回 false ,且剩餘的元素不會再進行檢測。如果所有元素都滿足條件,則返回 true。
注意: every() 不會對空數組進行檢測。every() 不會改變原始數組
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
document.write(ages.every(checkAdult)); //false
filter() 方法
filter()方法創建一個新的數組,新數組中元素是通過檢查指定數組中符合條件的所有元素
注意: filter() 不會對空數組進行檢測。filter() 不會改變原始數組
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
document.write(ages.filter(checkAdult)); //32,33,40
map() 方法
map() 方法返回一個新數組,數組中的元素為原始數組元素調用函數處理後的值。map() 方法按照原始數組元素順序依次處理元素
注意:map() 不會對空數組進行檢測。map() 不會改變原始數組
var numbers = [4, 9, 16, 25];
function myFunction() {
document.write(numbers.map(Math.sqrt));
} //2,3,4,5
var numbers = [65, 44, 12, 4];
function multiplyArrayElement(num) {
return num * 10;
}
function myFunction() {
document.getElementById("demo").innerHTML = numbers.map(multiplyArrayElement);
} //650, 440, 120, 40
valueOf()
valueOf() 是數組對象的默認方法,返回 Array 對象的原始值。該原始值由 Array 對象派生的所有對象繼承。
valueOf() 方法通常由 JavaScript 在後台自動調用,並不顯式地出現在代碼中。valueOf() 方法不會改變原數組
function myFunction(){
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.valueOf());
} //Banana,Orange,Apple,Mango
JavaScript Boolean(布爾)對象
Boolean 對象用於轉換一個不是 Boolean 類型的值轉換為 Boolean 類型值 (true 或者false)
Boolean 對象代表兩個值:"true" 或者 "false"
如果布爾對象無初始值或者其值為:0 -0 null "" false undefined NaN 那麼對象的值為 false。否則其值為 true(即使當自變量為字符串 "false" 時)
Boolean 對象屬性
屬性 | 描述 |
---|---|
constructor | 返回對創建此對象的 Boolean 函數的引用 |
prototype | 使您有能力向對象添加屬性和方法 |
Boolean 對象方法
方法 | 描述 |
---|---|
toString() | 把布爾值轉換為字符串,並返回結果 |
valueOf() | 返回 Boolean 對象的原始值 |
JavaScript Math(算數)對象
Math(算數)對象的作用是:執行常見的算數任務。Math對象提供多種算數值類型和函數。無需在使用這個對象之前對它進行定義
Math 對象並不像 Date 和 String 那樣是對象的類,因此沒有構造函數 Math()。
使用Math的屬性/方法的語法:
var x=Math.PI; // 返回PI
var y=Math.sqrt(16); // 返回16的平方根4
注意: Math對象無需在使用這個對象之前對它進行定義
算數值
JavaScript 提供 8 種可被Math對象訪問的算數值:
算數方法
除了可被 Math 對象訪問的算數值以外,還有幾個函數(方法)可以使用。
使用 Math 對象的 round 方法對一個數進行四舍五入。
document.write(Math.round(4.7)); //5
使用 Math 對象的 random() 方法來返回一個介於 0 和 1 之間的隨機數:
document.write(Math.random());
使用 Math 對象的 floor() 方法和 random() 來返回一個介於 0 和 11 之間的隨機數:
document.write(Math.floor(Math.random()*11));
Math 對象屬性
屬性 | 描述 |
---|---|
E | 返回算術常量 e,即自然對數的底數(約等於2.718) |
LN2 | 返回 2 的自然對數(約等於0.693) |
LN10 | 返回 10 的自然對數(約等於2.302) |
LOG2E | 返回以 2 為底的 e 的對數(約等於 1.414) |
LOG10E | 返回以 10 為底的 e 的對數(約等於0.434) |
PI | 返回圓周率(約等於3.14159) |
SQRT1_2 | 返回返回 2 的平方根的倒數(約等於 0.707) |
SQRT2 | 返回 2 的平方根(約等於 1.414) |
Math 對象方法
方法 | 描述 |
---|---|
abs(x) | 返回 x 的絕對值 |
acos(x) | 返回 x 的反餘弦值 |
asin(x) | 返回 x 的反正弦值 |
atan(x) | 以介於 -PI/2 與 PI/2 弧度之間的數值來返回 x 的反正切值 |
atan2(y,x) | 返回從x軸到點 (x,y) 的角度(介於 -PI/2 與 PI/2 弧度之間) |
ceil(x) | 對數進行上舍入 |
cos(x) | 返回數的餘弦 |
exp(x) | 返回 E 的 x 次冪的值 |
floor(x) | 對 x 進行下舍入 |
log(x) | 返回數的自然對數(底為e) |
max(x,y,z,...,n) | 返回 x,y,z,...,n 中的最高值 |
min(x,y,z,...,n) | 返回 x,y,z,...,n中的最低值 |
pow(x,y) | 返回 x 的 y 次冪 |
random() | 返回 0 ~ 1 之間的隨機數 |
round(x) | 把數四舍五入為最接近的整數 |
sin(x) | 返回數的正弦 |
sqrt(x) | 返回數的平方根 |
tan(x) | 返回角的正切 |
acos() 方法
語法:
Math.acos(x)
acos() 方法可返回一個數的反餘弦。返回的值是 0 到 PI 之間的弧度值
注意:如果參數 x 超過了 -1.0 ~ 1.0 的範圍,那麼瀏覽器將返回 NaN。如果參數 x 取值 -1,那麼將返回 PI
asin() 方法
語法:
Math.asin(x)
asin() 方法返回-PI/2 到 PI/2 之間的弧度值
注意:如果參數 x 超過了 -1.0 ~ 1.0 的範圍,那麼瀏覽器將返回 NaN。如果參數 x 取值 1,那麼將返回 PI/2。
JavaScript RegExp 對象
RegExp:是正則表達式(regular expression)的簡寫
什麼是 RegExp?
正則表達式是描述字符模式的對象
正則表達式用於對字符串模式匹配及檢索替換,是對字符串執行模式匹配的強大工具
當您檢索某個文本時,可以使用一種模式來描述要檢索的內容。RegExp 就是這種模式。簡單的模式可以是一個單獨的字符。更複雜的模式包括了更多的字符,並可用於解析、格式檢查、替換等等。可以規定字符串中的檢索位置,以及要檢索的字符類型,等等
語法
var patt=new RegExp(pattern,modifiers);
or more simply:
var patt=/pattern/modifiers;
pattern(模式) 描述了表達式的模式
modifiers(修飾符) 用於指定全局匹配、區分大小寫的匹配和多行匹配
RegExp 修飾符
修飾符用於執行不區分大小寫和全文的搜索
i - 修飾符是用來執行不區分大小寫的匹配
g - 修飾符是用於執行全文的搜索(而不是在找到第一個就停止查找,而是找到所有的匹配)
var str="Is this all there is?";
var patt1=/is/gi;
document.write(str.match(patt1)); //Is,is,is
test()
test()方法搜索字符串指定的值,根據結果並返回真或假。
下麵的示例是從字符串中搜索字符 "e" :
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free")); //true
exec()
exec()方法檢索字符串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null
下麵的示例是從字符串中搜索字符 "e" :
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free")); //e
修飾符
修飾符用於執行區分大小寫和全局匹配:
修飾符 | 描述 |
---|---|
i | 執行對大小寫不敏感的匹配 |
g | 執行全局匹配(查找所有匹配而非在找到第一個匹配後停止) |
m | 執行多行匹配 |
方括號
方括號用於查找某個範圍內的字符:
表達式 | 描述 |
---|---|
[abc] | 查找方括號之間的任何字符 |
[^abc] | 查找任何不在方括號之間的字符 |
[0-9] | 查找任何從 0 至 9 的數字 |
[a-z] | 查找任何從小寫 a 到小寫 z 的字符 |
[A-Z] | 查找任何從大寫 A 到大寫 Z 的字符 |
[A-z] | 查找任何從大寫 A 到小寫 z 的字符 |
[adgk] | 查找給定集合內的任何字符 |
[^adgk] | 查找給定集合外的任何字符 |
(red | blue |
元字符
元字符(Metacharacter)是擁有特殊含義的字符:
元字符 | 描述 |
---|---|
. | 查找單個字符,除了換行和行結束符 |
\w | 查找單詞字符 |
\W | 查找非單詞字符 |
\d | 查找數字 |
\D | 查找非數字字符 |
\s | 查找空白字符 |
\S | 查找非空白字符 |
\b | 匹配單詞邊界 |
\B | 匹配非單詞邊界 |
\0 | 查找 NUL 字符 |
\n | 查找換行符,返回換行符位置或-1 |
\f | 查找換頁符 |
\r | 查找回車符 |
\t | 查找製表符 |
\v | 查找垂直製表符 |
\xxx | 查找以八進製數 xxx 規定的字符 |
\xdd | 查找以十六進製數 dd 規定的字符 |
\uxxxx | 查找以十六進製數xxxx規定的 Unicode 字符 |
\s 元字符
\s 元字符用於查找空白字符
空白字符可以是:
空格符 (space character)
製表符 (tab character)
回車符 (carriage return character)
換行符 (new line character)
垂直換行符 (vertical tab character)
換頁符 (form feed character)
\B 元字符
\B 元字符匹配非單詞邊界。匹配位置的上一個和下一個字符的類型是相同的:即必須同時是單詞,或必須同時是非單詞字符。字符串的開頭和結尾處被視為非單詞字符。如果未找到匹配,則返回 null
量詞
量詞 | 描述 |
---|---|
n+ | 匹配任何包含至少一個 n 的字符串 |
n* | 匹配任何包含零個或多個 n 的字符串 |
n? | 匹配任何包含零個或一個 n 的字符串 |
n{X} | 匹配包含 X 個 n 的序列的字符串 |
n{X,Y} | 匹配包含至少X最多Y個n的序列的字符串 |
n{X,} | 匹配包含至少 X 個 n 的序列的字符串 |
n$ | 匹配任何結尾為 n 的字符串 |
^n | 匹配任何開頭為 n 的字符串 |
?=n | 匹配任何其後緊接指定字符串 n 的字符串 |
?!n | 匹配任何其後沒有緊接指定字符串n的字符串 |
RegExp 對象方法
方法 | 描述 | FF | IE |
---|---|---|---|
compile | 用於在腳本執行過程中編譯/改變正則表達式 | 1 | 4 |
exec | 檢索字符串中指定的值。返回找到的值,並確定其位置 | 1 | 4 |
test | 檢索字符串中指定的值。返回 true 或 false | 1 | 4 |
支持正則表達式的 String 對象的方法
方法 | 描述 | FF | IE |
---|---|---|---|
search | 檢索與正則表達式相匹配的值 | 1 | 4 |
match | 找到一個或多個正則表達式的匹配 | 1 | 4 |
replace | 替換與正則表達式匹配的子串 | 1 | 4 |
split | 把字符串分割為字符串數組 | 1 | 4 |
最後更新:2017-06-02 19:36:17