摘要:創建新對象操作符后跟一個構造函數上面引用類型構造函數實例保存在變量中。模式中使用的所有元字符都必須轉義。等價于下面對象向上舍入向下舍入四舍五入返回大于等于小于的隨機數
引用類型
引用類型的值(對象)是引用類型的一個實例。
創建新對象:new 操作符后跟一個 構造函數
var person = new Object();
上面:
引用類型: Object
構造函數:Object()
實例保存在變量 person 中。
Object 類型 創建 Object 實例的方式一:構造函數創建var person = new Object();創建 Object 實例的方式二:對象字面量
對象字面量這種方式不會調用 Object 構造函數
var person = { name: "Nicholas", // 屬性之間用逗號隔開 age: 29 // 在最后一個屬性后面不加都好 }
屬性名也可以用字符串:
var person = { "name": "Nicholas", // 屬性之間用逗號隔開 "age": 29 // 在最后一個屬性后面不加都好 5: true // 數值屬性會自動轉換為字符串 }訪問屬性
alert(person["name"]); //要將屬性以字符串形式放在方括號中 alert(person.name);
方括號的優點:可以通過變量來訪問屬性
var propertyName = "name"; alert(person[propertyName]);Array 類型
ECMAScript 數組的每一項可以保存任何類型的數據。比如:第一個位置保存字符串,第二個位置保存數值,第三個位置保存對象,等。數組大小是可以動態調整的。創建數組方式一:Array 構造函數
var colors = new Array(); var colors = new Array(20); //長度為20 var colors = new Array("red", "blue", "green"); //創建了一個包含3個字符串的數組
在使用 Array 構造函數時可以省略 new 操作符
var colors = Array(3); var colors = Array("greg");創建數組方式二:數組字面量
數組字面量這種方式不會調用 Array 構造函數
var colors = ["red", "blue", "green"];// 創建一個包含3個字符串的數組 var names = []; // 創建一個空數組 var values = [1, 2, ]; // 不要這樣! 這樣會創建一個包含 2 或 3 項的數組 var options = [, , , , ,] // 不要這樣! 這樣會創建一個包含 5 或 6 項的數組檢測數組
ES5新增 Array.isArray()方法,確定某個值是不是數組。 有些瀏覽器不支持。
if (Array.isArray(value)){ //執行某些操作 }轉換方法
toString(), valueOf()
var colors = ["red", "blue", "green"]; alert(colors.toString()); // "red,blue,green" 返回數組中每個值的字符串以逗號分隔的拼接字符串 alert(colors.valueOf()); // ["red", "blue", "green"] 返回的還是數組 alert(colors); // 與 toString() 相同
join()
var colors = ["red", "blue", "green"]; console.log(colors.join(",")); // red,blue,green console.log(colors.join("||")); // red||blue||green棧方法(LIFO 后進先出)
push() 接收任意數量的參數,把他們逐個添加到數組末尾
pop() 從數組末尾移除最后一項,減少數組的 length 值, 返回 移除的項。
var colors = new Array(); // 創建一個數組 var count = colors.push("red", "blue"); // 推入兩項 console.log(count); // 2 count = colors.push("black"); // 推入另一項 console.log(count); // 3 var item = colors.pop(); // 取得最后一項 console.log(item); // black console.log(colors.length); // 2隊列方法(FIFO 先進先出)
shift() 移除第一項
unshift() 在數組前端添加項
重排序方法reverse() 反轉數組項的順序
sort() 按升序排列數組項,sort()會調用 toString()轉型方法,
==特別注意==:所以sort()比較的是字符串。
var values = [0, 1, 10, 15, 5]; console.log(values.reverse()); // [5, 15, 10, 1, 0] console.log(values.sort()); // [0, 1, 10, 15, 5]
將比較函數傳遞到 sort()可以保持正確的升序:
function compare(value1, value2) { if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0; } } var values = [0, 1, 10, 15, 5]; values.sort(compare); console.log(values); // [0, 1, 5, 10, 15]
用 ES6中的箭頭函數來寫數組升序:
var values = [0, 1, 10, 15, 5]; values.sort((value1, value2) => value1 - value2); console.log(values); // [0, 1, 5, 10, 15]
用 ES6中的箭頭函數來寫數組降序:
var values = [0, 1, 10, 15, 5]; values.sort((value1, value2) => value2 - value1); console.log(values); // [15, 10, 5, 1, 0]操作方法
concat() 創建副本,將參數添加到副本的末尾,返回新構建的數組
var colors = ["red", "blue", "green"]; colors2 = colors.concat("yellow", ["black", "brown"]); console.log(colors); // ["red", "blue", "green"] console.log(colors2); // ["red", "blue", "green", "yellow", "black", "brown"]
slice() 數組截取
var colors = ["red", "blue", "green", "yellow", "purple"]; var colors2 = colors.slice(1); // 第一項 到 末尾 var colors3 = colors.slice(1, 4); // 第一項 到 第四項 console.log(colors2); // ["blue", "green", "yellow", "purple"] console.log(colors3); // ["blue", "green", "yellow"]
splice()
var colors = ["red", "green", "blue"]; var removed = colors.splice(0,1); //remove the first item alert(colors); //green,blue alert(removed); //red - one item array removed = colors.splice(1, 0, "yellow", "orange"); //insert two items at position 1 alert(colors); //green,yellow,orange,blue alert(removed); //empty array removed = colors.splice(1, 1, "red", "purple"); //insert two values, remove one alert(colors); //green,red,purple,orange,blue alert(removed); //yellow - one item array位置方法
indexOf() 要查找的值 從前往后 首次出現的索引
lastIndexOf() 要查找的值 從后往前 首次出現的索引
var numbers = [1,2,3,4,5,4,3,2,1]; alert(numbers.indexOf(4)); //3 alert(numbers.lastIndexOf(4)); //5 alert(numbers.indexOf(4, 4)); //5 alert(numbers.lastIndexOf(4, 4)); //3 var person = { name: "Nicholas" }; var people = [{ name: "Nicholas" }]; var morePeople = [person]; alert(people.indexOf(person)); //-1 alert(morePeople.indexOf(person)); //0迭代方法
every() 對數組中每一項運行給定函數,每一項都true,則返回 true
some()
var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.every(function(item, index, array){ return (item > 2); }); alert(everyResult); //false var someResult = numbers.some(function(item, index, array){ return (item > 2); }); alert(someResult); //true
filter()
var numbers = [1,2,3,4,5,4,3,2,1]; var filterResult = numbers.filter(function(item, index, array){ return (item > 2); }); alert(filterResult); //[3,4,5,4,3]
forEach() 對每一項運行指定函數,無返回值
map()
var numbers = [1,2,3,4,5,4,3,2,1]; var mapResult = numbers.map(function(item, index, array){ return item * 2; }); alert(mapResult); //[2,4,6,8,10,8,6,4,2]歸并方法
reduce() 從前往后執行 函數
reduceRight() 從后往前執行 函數
var values = [1,2,3,4,5]; var sum = values.reduce(function(prev, cur, index, array){ return prev + cur; }); alert(sum); //15Date 類型
ECMAScript 中的 Date 類型是在早期 Java 中的 java.util.Date 類基礎上構建的,使用自UTC(國際協調時間)1970年1月1日午夜(零時)開始經過的毫秒數來保存日期。創建 Date 實例Date 類型保存的日期能夠精確到1970年1月1日之前或之后的100 000 000 年。
構造函數創建:
var now = new Date();
var now = new Date(); alert(now); //Wed Mar 20 2019 21:32:55 GMT+0800 (中國標準時間) 當前時間 var someDate = new Date(Date.parse("May 25, 2004")); alert(someDate); //Tue May 25 2004 00:00:00 GMT+0800 (中國標準時間)
ES5 中添加了 Date.now()方法
// 取得開始時間 var start = Date.now(); // 調用函數 doSomething(); // 取得停止時間 var stop = Date.now(); var result = stop - start;
對于不支持 Date.now()的瀏覽器,使用 +操作符也可以獲取 Date 對象的時間戳:
// 取得開始時間 var start = +new Date(); // 調用函數 doSomething(); // 取得停止時間 var stop = +new Date(); var result = stop - start;RegExp 類型 創建正則表達式:字面量
var expression = / pattern / flags; / 模式(pattern) / 標志(flags) 的組合
3種標志:
g :表示全局(global)模式,模式被應用于所有字符串,而非在發現第一個匹配時立即停止。
i:表示不區分大小寫(case-insensitive),忽略模式與字符串的大小寫。
m:表示多行(multiline)模式,在到達一行文本末尾時繼續查找下一行。
模式中使用的所有元字符都必須轉義。正則表達式中的元字符包括:( [ ^ $ | ) ? * + . ] }
// 匹配字符串中所有"at"的實例 var pattern1 = /at/g; // 匹配第一個"bat" 或 "cat",不區分大小寫 var pattern2 = /[bc]at/i; // 匹配第一個"[bc]at",不區分大小寫 var pattern3 = /[bc]at/i; // 匹配所有以 "at" 結尾的3個字符的組合,不區分大小寫 var pattern4 = /.at/gi; // 匹配所有 ".at",不區分大小寫 var pattern5 = /.at/gi;創建正則表達式:RegExp構造函數
/* * 匹配第一個"bat" 或 "cat",不區分大小寫 */ var pattern = new RegExp("[bc]at", "i");RegExp實例方法
exec() 捕獲組
test() 驗證。常用于 驗證用戶輸入的情況。
Function 類型ECMAScript 中,函數實際上是對象。每個函數都是 Function 類型的實例,與其他引用類型一樣具有屬性和方法。函數沒有重載 函數聲明與函數表達式函數是對象,函數名是一個指向對象的指針,不會與某個函數綁定。
函數聲明:解析器在向執行環境加載數據時,在代碼開始執行之前,就通過 函數聲明提升 讀取并將函數聲明添加到執行環境中。對代碼求值時,JavaScript 引擎在第一遍會聲明函數并將它們放到源代碼樹的頂部。、
函數表達式:解析器執行到它所在的代碼行,才會真正被解釋執行。
下面的代碼可以正常運行:
alert(sum(10,10)); //20 function sum(num1, num2){ return num1 + num2; }
將函數聲明改為函數表達式會錯誤:
alert(sum(10, 20)); var sum = function(num1, num2){ retuen num1 + num2; };函數內部屬性
arguments
this
this 引用的是函數執行的環境對象——或者也可以說是 this 值(當在網頁的全局作用域中調用函數時, this 對象引動的就是 window)。
函數屬性和方法
每個函數都包含兩個屬性
length
prototype
每個函數都包含兩個非繼承而來的方法
apply()
call()
ES5還定義了一個方法
bind()
基本包裝類型ECMAScript 還提供了3個特殊的引用類型:Boolean、Number,String
每當讀取一個基本類型值的時候,后臺就會創建一個對應的基本包裝類型的對象,從而讓我們能夠用一些方法來操作這些數據。
引用類型與基本包裝類型的區別:
使用 new 操作符創建的引用類型的實例,在執行流離開當前作用于之前都一直保存在內存中
自動創建的基本包裝類型的對象,則只存在于一行代碼的執行瞬間,然后立即被銷毀。
Boolean 類型
布爾對象:
布爾表達式中的所有對象都會被轉換為 true
var falseObject = new Boolean(false); var result = falseObject && true; alert(result); //true
基本類型的布爾值:
var falseValue = false; result = falseValue && true; alert(result); //falseNumber 類型
var numberObject = new Number(10);
toString() 參數表示返回幾進制數值的字符串形式
alert(numberObject.toString()); //"10" alert(numberObject.toString(2)); //"1010" alert(numberObject.toString(8)); //"12" alert(numberObject.toString(10)); //"10" alert(numberObject.toString(16)); //"a"
toFixed() 參數表示顯示幾位小數
alert(numberObject.toFixed(2)); //outputs "10.00"
toExponential() 返回以指數表示法(也稱 e 表示法)表示的數值的字符串形式
var num = 10; alert(num.toExponential(1)); // "1.0e+1"
toPrecision() 參數表示數值的所有數字的位數
var numberObject = new Number(99); alert(numberObject.toPrecision(1)); //"1e+2" alert(numberObject.toPrecision(2)); //"99" alert(numberObject.toPrecision(3)); //"99.0"String 類型
var stringObject = new String("hello world");字符方法
charAt() 參數:字符位置 返回:給定位置的字符(單字符字符串形式)
var stringValue = "hello world"; alert(stringValue.charAt(1)); // "e"
charCodeAt() 參數:字符位置 返回:給定位置字符的編碼
var stringValue = "hello world"; alert(stringValue.charCodeAt(1)); // 輸出 “101”,也就是小寫字母 "e" 的字符編碼
[] ES5中的訪問個別自負的方法
var stringValue = "hello world"; alert(stringValue[1]); // "e"字符串操作方法
concat() 字符串拼接
var stringValue = "hello"; var result = stringValue.concat("world"); alert(stringValue); // "hello" alert(result); // "hello world"
slice()
substr()
substring()
var stringValue = "hello world"; alert(stringValue.slice(3)); //"lo world" alert(stringValue.substring(3)); //"lo world" alert(stringValue.substr(3)); //"lo world" alert(stringValue.slice(3, 7)); //"lo w" alert(stringValue.substring(3,7)); //"lo w" alert(stringValue.substr(3, 7)); //"lo worl" 第二個參數指定的是要返回的字符個數字符串位置方法
indexOf() 從指定位置向后搜索
lastIndexOf() 從指定位置向前搜索
var stringValue = "hello world"; alert(stringValue.indexOf("o")); //4 alert(stringValue.lastIndexOf("o")); //7 alert(stringValue.indexOf("o", 6)); //7 從第6個開始向后搜索 alert(stringValue.lastIndexOf("o", 6)); //4 從第6個開始向前搜索trim()方法
ECMAScript 中定義的 trim()方法。
創建一個字符串的副本,刪除前置及后綴的所有空格,然后返回結果。
字符串大小寫轉換方法toLowerCase()
toLocaleLowerCase()
toUpperCase()
toLocaleUpperCase()
var stringValue = "hello world"; alert(stringValue.toLocaleUpperCase()); //"HELLO WORLD" alert(stringValue.toUpperCase()); //"HELLO WORLD" alert(stringValue.toLocaleLowerCase()); //"hello world" alert(stringValue.toLowerCase()); //"hello world"字符串的模式匹配方法
mach() 只接受一個參數
var text = "cat, bat, sat, fat"; var pattern = /.at/; var matches = text.match(pattern); alert(matches.index); //0 alert(matches[0]); //"cat" alert(pattern.lastIndex); //0
search() 接受唯一參數,返回字符串中第一個匹配項的索引
var text = "cat, bat, sat, fat"; var pos = text.search(/at/); alert(pos); //1
replace() l兩個參數:參數一:RegExp對象或者一個字符串,參數二:字符串或函數。
var text = "cat, bat, sat, fat"; var result = text.replace("at", "ond"); alert(result); //"cond, bat, sat, fat" result = text.replace(/at/g, "ond"); alert(result); //"cond, bond, sond, fond" result = text.replace(/(.at)/g, "word ($1)"); alert(result); //word (cat), word (bat), word (sat), word (fat)
split() 分割 結果是數組
var colorText = "red,blue,green,yellow"; var colors1 = colorText.split(","); //["red", "blue", "green", "yellow"] var colors2 = colorText.split(",", 2); //["red", "blue"] var colors3 = colorText.split(/[^,]+/); //["", ",", ",", ",", ""]localCompare() 方法
localCompare() 比較兩個字符串在字母表中的順序
var stringValue = "yellow"; alert(stringValue.localeCompare("brick")); //1 alert(stringValue.localeCompare("yellow")); //0 alert(stringValue.localeCompare("zoo")); //-1fromCharCode() 方法
fromCharCode() 接收一或多個字符串編碼,把他們轉換成一個字符串
alert(String.fromCharCode(104, 101, 108, 108, 111)); //"hello"單體內置對象
內置對象的定義:由 ECMAScript 實現提供的、不依賴于宿主環境的對象,這些對象在 ECMAScript 程序執行之前就已經存在了。
z在所有代碼執行之前,作用域中就已經存在兩個內置對象:Global 和 Math。
Global 對象事實上,沒有全局變量或全局函數
所有在全局作用域中定義的屬性和函數,都是 Global 對象的屬性。
URI 編碼方法encodeURI()
encodeURIComponent()
var uri = "http://www.wrox.com/illegal value.htm#start"; //"http://www.wrox.com/illegal%20value.htm#start" alert(encodeURI(uri)); //"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start" alert(encodeURIComponent(uri));
decodeURI()
decodeURIComponent()
var uri = "http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start"; //http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start alert(decodeURI(uri)); //http://www.wrox.com/illegal value.htm#start alert(decodeURIComponent(uri));eval() 方法
eval()方法就像是一個完整的 ECMAScript 解析器,它只接受一個參數,即要執行的 ECMAScript 字符串。
eval("alert("hi")"); // 等價于下面 alert("hi");Math 對象
Math.max()
Math.min()
Math.ceil() 向上舍入
Math.floor() 向下舍入
Math.round() 四舍五入
Math.random() 返回大于等于 0 小于 1 的隨機數
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103217.html
摘要:執行環境的類型有兩種全局全局執行環境局部函數執行環境每個環境都可以向上搜索作用域鏈,以查詢變量和函數名但任何環境都不能通過向下搜索作用域鏈而進入另一個執行環境。內部可通過作用域鏈訪問外部,外部不能訪問內部。 變量、作用域和內存問題 ECMAScript 數據類型 基本類型(5種): Undefined,Null,Boolean,Number,String typeof() 檢測...
摘要:具體說就是執行流進入下列任何一個語句時,作用域鏈就會得到加長語句的塊。如果局部環境中存在著同名的標識符,就不會使用位于父環境中的標識符訪問局部變量要比訪問全局變量更快,因為不用向上搜索作用域鏈。 基本類型和引用類型的值 ECMAscript變量包含 基本類型值和引用類型值 基本類型值值的是基本數據類型:Undefined, Null, Boolean, Number, String ...
摘要:對的兩個主要拓展是選擇和。以下插入標記的拓展已經納入了規范。在寫模式下,會根據指定的字符串創建新的子樹,然后用這個子樹完全替換調用元素。在刪除帶有時間處理程序或引用了其他對象子樹時,就有可能導致內存占用問題。 盡管DOM作為API已經非常完善了,但為了實現更多功能,仍然會有一些標準或專有的拓展。2008年之前,瀏覽器中幾乎所有的拓展都是專有的,此后W3C著手將一些已經成為事實標準的專...
摘要:通常一個完成的不僅僅包含了還包括了以及相關版本該版本在中使用。基于原型函數先行的語言使用基于原型的的繼承機制,函數是的第一等公民其他相關的語言特性編譯型語言把做好的源程序全部編譯成二進制代碼的可運行程序。 轉載請注明出處,創作不易,更多文章請戳 https://github.com/ZhengMaste... 前言:JavaScript誕生于1995年,它是一門腳本語言,起初的目...
閱讀 1079·2021-11-16 11:44
閱讀 1368·2019-08-30 13:12
閱讀 2401·2019-08-29 16:05
閱讀 3070·2019-08-28 18:29
閱讀 904·2019-08-26 13:41
閱讀 3228·2019-08-26 13:34
閱讀 2596·2019-08-26 10:35
閱讀 931·2019-08-26 10:28