1. JavaScript對象
可以大體分頁3大類:
第一類:基本對象,我們主要學(xué)習(xí)Array和JSON和String
第二類:BOM對象,主要是和瀏覽器相關(guān)的幾個(gè)對象
第三類:DOM對象,JavaScript中將html的每一個(gè)標(biāo)簽都封裝成一個(gè)對象
1.1.1 基本對象
1.1.1.1 Array對象
語法格式
Array對象時(shí)用來定義數(shù)組的。常用語法格式有如下2種:
方式1:
var 變量名 = new Array(元素列表);
例如:
var arr = new Array(1,2,3,4); //1,2,3,4 是存儲在數(shù)組中的數(shù)據(jù)(元素)
方式2:
var 變量名 = [ 元素列表 ];
例如:
var arr = [1,2,3,4]; //1,2,3,4 是存儲在數(shù)組中的數(shù)據(jù)(元素)
數(shù)組定義好了,那么我們該如何獲取數(shù)組中的值呢?和java中一樣,需要通過索引來獲取數(shù)組中的值。語法如下:
arr[索引] = 值;
接下來,按照上述的語法定義數(shù)組,并且通過索引來獲取數(shù)組中的值。
<script>
//定義數(shù)組
var arr = new Array(1,2,3,4);
var arr = [1,2,3,4];
//獲取數(shù)組中的值,索引從0開始計(jì)數(shù)
console.log(arr[0]);
console.log(arr[1]);
</script>
瀏覽器控制臺觀察的效果如下:輸出1和2
特點(diǎn)
與java中不一樣的是,JavaScript中數(shù)組相當(dāng)于java中的集合,數(shù)組的長度是可以變化的。而且JavaScript是弱數(shù)據(jù)類型的語言,所以數(shù)組中可以存儲任意數(shù)據(jù)類型的值。接下來我們通過代碼來演示上述特點(diǎn)。
注釋掉之前的代碼,添加如下代碼:
//特點(diǎn): 長度可變 類型可變
var arr = [1,2,3,4];
arr[10] = 50;
console.log(arr[10]);
console.log(arr[9]);
console.log(arr[8]);
上述代碼定義的arr變量中,數(shù)組的長度是4,但是我們直接再索引10的位置直接添加了數(shù)據(jù)10,并且輸出索引為10的位置的元素,瀏覽器控制臺數(shù)據(jù)結(jié)果如下:
因?yàn)樗饕?和9的位置沒有值,所以輸出內(nèi)容undefined,當(dāng)然,我們也可以給數(shù)組添加其他類型的值,添加代碼如下:注釋掉之前控制臺輸出的代碼
//特點(diǎn): 長度可變 類型可變
var arr = [1,2,3,4];
arr[10] = 50;
// console.log(arr[10]);
// console.log(arr[9]);
// console.log(arr[8]);
arr[9] = "A";
arr[8] = true;
console.log(arr);
瀏覽器控制臺輸出結(jié)果如下:
屬性和方法
Array作為一個(gè)對象,那么對象是有屬性和方法的,所以接下來我們介紹一下Array對象的屬性和方法
官方文檔中提供了Array的很多屬性和方法,但是我們只學(xué)習(xí)常用的屬性和方法,如下圖所示:
屬性:
屬性 | 描述 |
---|---|
length | 設(shè)置或返回?cái)?shù)組中元素的數(shù)量。 |
方法:
方法方法 | 描述 |
---|---|
forEach() | 遍歷數(shù)組中的每個(gè)有值得元素,并調(diào)用一次傳入的函數(shù) |
push() | 將新元素添加到數(shù)組的末尾,并返回新的長度 |
splice() | 從數(shù)組中刪除元素 |
-
length屬性:
length屬性可以用來獲取數(shù)組的長度,所以我們可以借助這個(gè)屬性,來遍歷數(shù)組中的元素,添加如下代碼:
var arr = [1,2,3,4]; arr[10] = 50; for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
瀏覽器控制臺輸出結(jié)果如圖所示:
-
forEach()函數(shù)
首先我們學(xué)習(xí)forEach()方法,顧名思義,這是用來遍歷的,那么遍歷做什么事呢?所以這個(gè)方法的參數(shù),需要傳遞一個(gè)函數(shù),而且這個(gè)函數(shù)接受一個(gè)參數(shù),就是遍歷時(shí)數(shù)組的值。修改之前的遍歷代碼如下:
//e是形參,接受的是數(shù)組遍歷時(shí)的值 arr.forEach(function(e){ console.log(e); })
當(dāng)然了,在ES6中,引入箭頭函數(shù)的寫法,語法類似java中l(wèi)ambda表達(dá)式,修改上述代碼如下:
arr.forEach((e) => { console.log(e); })
瀏覽器輸出結(jié)果如下:注意的是,沒有元素的內(nèi)容是不會輸出的,因?yàn)閒orEach只會遍歷有值的元素
-
push()函數(shù)
push()函數(shù)是用于向數(shù)組的末尾添加元素的,其中函數(shù)的參數(shù)就是需要添加的元素,編寫如下代碼:向數(shù)組的末尾添加3個(gè)元素
//push: 添加元素到數(shù)組末尾 arr.push(7,8,9); console.log(arr);
瀏覽器輸出結(jié)果如下:
-
splice()函數(shù)
splice()函數(shù)用來數(shù)組中的元素,函數(shù)中填入2個(gè)參數(shù)。
參數(shù)1:表示從哪個(gè)索引位置刪除
參數(shù)2:表示刪除元素的個(gè)數(shù)
如下代碼表示:從索引2的位置開始刪,刪除2個(gè)元素
//splice: 刪除元素 arr.splice(2,2); console.log(arr);
瀏覽器執(zhí)行效果如下:元素3和4被刪除了,元素3是索引2
Array數(shù)組的完整代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-對象-Array</title>
</head>
<body>
</body>
<script>
//定義數(shù)組
// var arr = new Array(1,2,3,4);
// var arr = [1,2,3,4];
// console.log(arr[0]);
// console.log(arr[1]);
//特點(diǎn): 長度可變 類型可變
// var arr = [1,2,3,4];
// arr[10] = 50;
// console.log(arr[10]);
// console.log(arr[9]);
// console.log(arr[8]);
// arr[9] = "A";
// arr[8] = true;
// console.log(arr);
var arr = [1,2,3,4];
arr[10] = 50;
// for (let i = 0; i < arr.length; i++) {
// console.log(arr[i]);
// }
// console.log("==================");
//forEach: 遍歷數(shù)組中有值的元素
// arr.forEach(function(e){
// console.log(e);
// })
// //ES6 箭頭函數(shù): (...) => {...} -- 簡化函數(shù)定義
// arr.forEach((e) => {
// console.log(e);
// })
//push: 添加元素到數(shù)組末尾
// arr.push(7,8,9);
// console.log(arr);
//splice: 刪除元素
arr.splice(2,2);
console.log(arr);
</script>
</html>
1.1.1.2 String對象
語法格式
String對象的創(chuàng)建方式有2種:
方式1:
var 變量名 = new String("…") ; //方式一
例如:
var str = new String("Hello String");
方式2:
var 變量名 = "…" ; //方式二
例如:
var str = 'Hello String';
按照上述的格式,在VS Code中創(chuàng)建為名03. JS-對象-String.html的文件,編寫代碼如下:
<script>
//創(chuàng)建字符串對象
//var str = new String("Hello String");
var str = " Hello String ";
console.log(str);
</script>
瀏覽器控制臺輸出結(jié)果如下:
屬性和方法
String對象也提供了一些常用的屬性和方法,如下表格所示:
屬性:
屬性 | 描述 |
---|---|
length | 字符串的長度。 |
方法:
方法 | 描述 |
---|---|
charAt() | 返回在指定位置的字符。 |
indexOf() | 檢索字符串。 |
trim() | 去除字符串兩邊的空格 |
substring() | 提取字符串中兩個(gè)指定的索引號之間的字符。 |
-
length屬性:
length屬性可以用于返回字符串的長度,添加如下代碼:
//length console.log(str.length);
-
charAt()函數(shù):
charAt()函數(shù)用于返回在指定索引位置的字符,函數(shù)的參數(shù)就是索引。添加如下代碼:
console.log(str.charAt(4));
-
indexOf()函數(shù)
indexOf()函數(shù)用于檢索指定內(nèi)容在字符串中的索引位置的,返回值是索引,參數(shù)是指定的內(nèi)容。添加如下代碼:
console.log(str.indexOf("lo"));
-
trim()函數(shù)
trim()函數(shù)用于去除字符串兩邊的空格的。添加如下代碼:
var s = str.trim(); console.log(s.length);
-
substring()函數(shù)
substring()函數(shù)用于截取字符串的,函數(shù)有2個(gè)參數(shù)。
參數(shù)1:表示從那個(gè)索引位置開始截取。包含
參數(shù)2:表示到那個(gè)索引位置結(jié)束。不包含
console.log(s.substring(0,5));
整體代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-對象-String</title>
</head>
<body>
</body>
<script>
//創(chuàng)建字符串對象
//var str = new String("Hello String");
var str = " Hello String ";
console.log(str);
//length
console.log(str.length);
//charAt
console.log(str.charAt(4));
//indexOf
console.log(str.indexOf("lo"));
//trim
var s = str.trim();
console.log(s.length);
//substring(start,end) --- 開始索引, 結(jié)束索引 (含頭不含尾)
console.log(s.substring(0,5));
</script>
</html>
瀏覽器執(zhí)行效果如圖所示:
1.1.1.3 JSON對象
自定義對象
在 JavaScript 中自定義對象特別簡單,其語法格式如下:
var 對象名 = {
屬性名1: 屬性值1,
屬性名2: 屬性值2,
屬性名3: 屬性值3,
函數(shù)名稱: function(形參列表){}
};
我們可以通過如下語法調(diào)用屬性:
對象名.屬性名
通過如下語法調(diào)用函數(shù):
對象名.函數(shù)名()
<script>
//自定義對象
var user = {
name: "Tom",
age: 10,
gender: "male",
eat: function(){
console.log("用膳~");
}
}
console.log(user.name);
user.eat();
<script>
瀏覽器控制臺結(jié)果如下:
其中上述函數(shù)定義的語法可以簡化成如下格式:
var user = {
name: "Tom",
age: 10,
gender: "male",
// eat: function(){
// console.log("用膳~");
// }
eat(){
console.log("用膳~");
}
}
json對象
JSON對象:JavaScript Object Notation,JavaScript對象標(biāo)記法。是通過JavaScript標(biāo)記法書寫的文本。其格式如下:
{
"key":value,
"key":value,
"key":value
}
其中,key必須使用引號并且是雙引號標(biāo)記,value可以是任意數(shù)據(jù)類型。
例如我們可以直接百度搜索“json在線解析”,隨便挑一個(gè)進(jìn)入,然后編寫內(nèi)容如下:
{
"name": "李傳播"
}
但是當(dāng)我們將雙引號切換成單引號,再次校驗(yàn),則報(bào)錯(cuò),如下圖所示:
那么json這種數(shù)據(jù)格式的文本到底應(yīng)用在企業(yè)開發(fā)的什么地方呢?-- 經(jīng)常用來作為前后臺交互的數(shù)據(jù)載體
如下圖所示:前后臺交互時(shí),我們需要傳輸數(shù)據(jù),但是java中的對象我們該怎么去描述呢?我們可以使用如圖所示的xml格式,可以清晰的描述java中需要傳遞給前端的java對象。
但是xml格式存在如下問題:
- 標(biāo)簽需要編寫雙份,占用帶寬,浪費(fèi)資源
- 解析繁瑣
所以我們可以使用json來替代,如下圖所示:
接下來我們通過代碼來演示json對象:注釋掉之前的代碼,編寫代碼如下:
var jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}';
alert(jsonstr.name);
瀏覽器輸出結(jié)果如下:
為什么呢?**因?yàn)樯鲜鍪且粋€(gè)json字符串,不是json對象,所以我們需要借助如下函數(shù)來進(jìn)行json字符串和json對象的轉(zhuǎn)換。**添加代碼如下:
var obj = JSON.parse(jsonstr);
alert(obj.name);
此時(shí)瀏覽器輸出結(jié)果如下:
當(dāng)然了,我們也可以通過如下函數(shù)將json對象再次轉(zhuǎn)換成json字符串。添加如下代碼:
alert(JSON.stringify(obj));
瀏覽器輸出結(jié)果如圖所示:
整體全部代碼如下:文章來源:http://www.zghlxwxcb.cn/news/detail-726895.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS-對象-JSON</title>
</head>
<body>
</body>
<script>
//自定義對象
// var user = {
// name: "Tom",
// age: 10,
// gender: "male",
// // eat: function(){
// // console.log("用膳~");
// // }
// eat(){
// console.log("用膳~");
// }
// }
// console.log(user.name);
// user.eat();
// //定義json
var jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}';
//alert(jsonstr.name);
// //json字符串--js對象
var obj = JSON.parse(jsonstr);
//alert(obj.name);
// //js對象--json字符串
alert(JSON.stringify(obj));
</script>
</html>
后記
????????美好的一天,到此結(jié)束,下次繼續(xù)努力!欲知后續(xù),請看下回分解,寫作不易,感謝大家的支持??! ??????文章來源地址http://www.zghlxwxcb.cn/news/detail-726895.html
到了這里,關(guān)于掌握 JavaScript:從初學(xué)者到高級開發(fā)者的完整指南之JavaScript對象(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!