JavaScript學(xué)習(xí)筆記整理之引用類型
引用類型是JavaScript中很重要的內(nèi)容。引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起。它描述的是一類對象所具有的屬性和方法。Object是一個基礎(chǔ)類型,Array是數(shù)組類型,Date是日期類型,RegExp是正則表達(dá)式類型,等。
擁抱JavaScript
曾經(jīng)名不經(jīng)傳的JavaScript隨著AJAX的流行而身價倍增,現(xiàn)在JavaScript不再僅僅是WEB開發(fā)中一個可有可無的輔助工具,甚至有了專門屬于它的職位“JavaScript工程師”,那怕你僅僅是一名WEB后臺開發(fā)程序員,你都必須了解JavaScript,至少在一些相關(guān)招聘職位要求上你可以看到“熟悉JavaScript優(yōu)先”的字眼。甚至我還要告訴你,你將可以用JavaScript開發(fā)桌面軟件,這得益于Adobe AIR的另外一種開發(fā)模式,即用HTML+CSS+JavaScript開發(fā)AIR。
1.Object類型
1. 創(chuàng)建:
var dog = new Object();
常應(yīng)用于存儲和傳輸數(shù)據(jù)。比如存儲:
var person = new Object(); person.name = "Nicholas"; person.age = 29;
創(chuàng)建的第二種方式:(在創(chuàng)建時,屬性名也可以是字符串格式,即:可以給屬性名加引號。)
var person = { name : "Nicholas", age : 29 };
2.取出屬性值:person["name"];或者:person.name;
2.Array類型
同一個數(shù)組可以保存任意類型的數(shù)據(jù)(大雜燴)。
1.數(shù)組可以動態(tài)調(diào)整(多加一個數(shù)據(jù),它自己就增長一個長度,不是死的。)。
2.創(chuàng)建:
var stars=new Array();//方式1 var stars=new Array(20);//方式2 var stars=new Array("周杰倫","林俊杰","孫燕姿");//方式3 var stars=Array(20);//方式4 var stars=["周杰倫","孫燕姿","林俊杰"];//方式6
3.動態(tài)調(diào)整示例:
var stars=["周杰倫","林俊杰","孫燕姿"]; stars[1]="JJ";//動態(tài)改變(把林俊杰變?yōu)镴J) stars[3]="皮褲汪";//動態(tài)增長(加了一個長度) stars.length=1;//動態(tài)強制縮減(林俊杰、孫燕姿、皮褲汪強制移除,長度變?yōu)?)
4.檢測數(shù)組:Array.isArray(value);
5.用join()把數(shù)組轉(zhuǎn)換成有分隔符的字符串:
var stars = ["周杰倫", "王尼瑪", "張全蛋"]; alert(stars .join(",")); //周杰倫,王尼瑪,張全蛋 alert(stars .join("-")); //周杰倫-王尼瑪-張全蛋
6.可以像棧一樣使用數(shù)組(pop()出來,push()進(jìn)去)。
7.可以像隊列一樣使用數(shù)組。(結(jié)合shift()和push()):
var stars = new Array(); //create an array var count = colors.push("周杰倫", "王尼瑪"); //push two items alert(count); //2 count = stars .push("張全蛋"); //push another item on alert(count); //3 var item = colors.shift(); //get the first item alert(item); //周杰倫 alert(colors.length); //2 /**所謂棧變隊列,其實就是把棧顛倒過來再拉取*/
8.排序。
1.reverse()翻轉(zhuǎn)數(shù)組順序;(返回經(jīng)過排序后的數(shù)組)
2.sort()從小到大排序。但是是按字符串排序,不是按數(shù)字排序:(返回經(jīng)過排序后的數(shù)組)。
var values = [, , , , ]; values.sort(); alert(values); //,,,,
要想按你預(yù)期的方式排序,可以給sort()里面加一個比較函數(shù)當(dāng)作參數(shù):
function compare(value, value) { if (value < value) { return -; } else if (value > value) { return ; } else { return ; } } var values = [, , , , ]; values.sort(compare); alert(values); //,,,,
簡化版本的比較函數(shù)(sort只關(guān)心返回的是正數(shù)、負(fù)數(shù)還是0):
function compare(value1,value2){ return value2 - value1; }
9.對數(shù)組的操作:聯(lián)結(jié)、切片、拼接。
1.聯(lián)結(jié):使用concat,記憶:concat-->concatenate:連結(jié),連鎖。
舉例:
var stars = ["周杰倫", "王尼瑪", "張全蛋"]; var stars = stars .concat("太子妃", ["花千骨", "梅長蘇"]); alert(stars); //周杰倫,王尼瑪,張全蛋 alert(stars); //周杰倫,王尼瑪,張全蛋,太子妃,花千骨,梅長蘇
2.切片。使用slice,記憶:slice翻譯:切片。舉例:
var stars = ["梅長蘇", "譽王", "靖王", "霓凰", "飛流"]; var stars= stars.slice(); var stars= stars.slice(,); alert(stars); //譽王,靖王,霓凰,飛流(從第一個位置開始切) alert(stars); //譽王,靖王,霓凰(從第個位置切到第個位置,表示半封閉,不包含)
3.拼接。splice。功能強大??梢詣h除、插入、替換。
1.刪除任意數(shù)量的項:比如:splice(0,2),刪除第0,1項(半封閉區(qū)間)(返回刪除項)。
2.指定位置插入任意數(shù)量的項:比如:splice(2,0,"周杰倫","王尼瑪"),從第2個位置開始插入周杰倫、王尼瑪兩項。
3.指定位置插入任意數(shù)量的項且同時刪除任意數(shù)量的項。比如:splice(2,1,"周杰倫","王尼瑪"),從第2個位置刪除1項,然后開始插入周杰倫、王尼瑪兩項。
10.位置方法:indexOf,lastIndexOf;
11.迭代方法:分為:全部合格才通過、任意一個合格就通過、過濾部分渣渣,一對一映射,迭代查詢,縮減。
1.全部合格才通過:
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
上例中每一項都大于2才返回true。
2.任意一個合格就通過:
var numbers = [1,2,3,4,5,4,3,2,1]; var someResult = numbers.some(function(item, index, array){ return (item > 2); }); alert(someResult); //true
上例中,有一個大于2就返回true。
3.過濾部分渣渣:
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]
上例中,把大于2的都過濾掉。
4.一對一映射:
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]
上例中,給每一項都乘以2.
5.迭代:使用for-each。
6.縮減:reduce。
var values = [1,2,3,4,5]; var sum = values.reduce(function(prev, cur, index, array){ return prev + cur; }); alert(sum);//15
累加求和返回,5項縮為1項?!?br />
3.RegExp類型
1.var expression=/ pattern / flags;
2.flags分三種:g(global全局模式,應(yīng)用于所有字符串)、i(case-insensive,忽略字母大小寫)、m(multiline,多行模式,一行檢驗完了接著下一行。)。舉例:
/**匹配字符串中所有'at'的實例*/ var pattern1=/at/g; /**匹配第一個'bat'或'cat',不分大小寫*/ var pattern2 =/[bc]at/i; /**匹配所有以'at'結(jié)尾的3個字符組合,不分大小寫*/ var pattern3=/.at/gi;
3.模式中所有的元字符必須轉(zhuǎn)義,元字符:( { [ \ ^ $ | ) ? * + . ] }
4.Function類型
1.每個函數(shù)都是Function類型的實例,而且與其他引用類型一樣,都有屬性和方法。
2.函數(shù)的兩種定義方法:
方法1:
function sum(a,b){ return a + b; }
方法2:
var sum=function(a,b){ return a + b; }
3.函數(shù)沒有重載。
5.Boolean、Number、String:基本包裝類型
var a="Jay Chou is a superstar"; var b=a.substring(0,8);
上例中,a是基本類型,但是a可以調(diào)用substring方法,是因為,后臺自動完成a的包裝操作,創(chuàng)建String類型的一個實例。Boolean,Number也類似。
6.單體內(nèi)置對象,不需要實例化,直接使用,如:Math,Global。
1.所有全局作用域中定義的函數(shù)、變量,都是Global對象的方法,比如:parseInt,isNaN等。
2.eval()方法也是Global對象的方法,它負(fù)責(zé)解析javascript。
3.Math對象是保存數(shù)學(xué)公式和相關(guān)信息的。它有很多方法, 如:min求最小值,max求最大值,ceil()向上取整,floor向下取整,round四舍五入,random取隨機(jī)數(shù)。
ps:引用類型理解:變量的交換等于把現(xiàn)有一間店的鑰匙(變量引用地址)復(fù)制一把給了另外一個老板,此時兩個老板同時管理一間店,兩個老板的行為都有可能對一間店的運營造成影響。
引用類型例子
function chainStore() { var store1=['Nike China']; var store2=store1; alert(store2[0]); //Nike China store1[0]='Nike U.S.A.'; alert(store2[0]); //Nike U.S.A. } chainStore(); //在上面的代碼中,store2只進(jìn)行了一次賦值,理論上它的值已定,但后面通過改寫store1的值,發(fā)現(xiàn)store2的值也發(fā)生了改變,這正是引用類型的特征,也是我們要注意的地方
- JavaScript之引用類型介紹
- Js從頭學(xué)起(基本數(shù)據(jù)類型和引用類型的參數(shù)傳遞詳細(xì)分析)
- js中的值類型和引用類型小結(jié) 文字說明與實例
- JavaScript中值類型與引用類型實例說明
- js類型轉(zhuǎn)換與引用類型詳解(Boolean_Number_String)
- js中判斷Object、Array、Function等引用類型對象是否相等
- JavaScript入門教程之引用類型
- JavaScript引用類型和基本類型詳解
- 詳解JavaScript基本類型和引用類型
- JavaScript基礎(chǔ)篇(3)之Object、Function等引用類型
- 跟我學(xué)習(xí)javascript的基本類型和引用類型
- 《JavaScript高級編程》學(xué)習(xí)筆記之object和array引用類型
- javascript引用類型指針的工作方式
- JavaScript中各種引用類型的常用操作方法小結(jié)
相關(guān)文章
JavaScript對象和字串之間的轉(zhuǎn)換實例探討
從對象的格式可以看出,如果字串的格式定義成 json 格式的, 就可以直接轉(zhuǎn)換為obj了,感興趣的朋友可以參考下哈2013-04-04javascript特效實現(xiàn)——當(dāng)前時間和倒計時效果的簡單實例
下面小編就為大家?guī)硪黄猨avascript特效實現(xiàn)——當(dāng)前時間和倒計時效果的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07Js 代碼中,ajax請求地址后加隨機(jī)數(shù)防止瀏覽器緩存的原因
Js 代碼中,ajax請求地址后加隨機(jī)數(shù)防止瀏覽器緩存的原因,需要的朋友可以參考一下2013-05-05