引用類型是一種數(shù)據(jù)結(jié)構(gòu)瓢阴,描述了一類對象所具有的屬性和方法咐蚯。它具有以下幾種形式:
Object類型:
1.創(chuàng)建Object實例的方法:
a. new操作符
var person = new Object();
person.name="gly";
b.對象字面量
var person={
name:"gly"
}
2.訪問對象屬性方法:
a.點表示方法(一般性方法)
person.name
b.方括號表示方法(當(dāng)屬性為變量時可以采用該方法)
person["name"]
Array類型
1.創(chuàng)建數(shù)組
a. Array
var colors=new Array();
b. 數(shù)組字面量
var colors=[1,2,3]
2.檢測數(shù)組:Array.isArray(value)
3.棧方法:push() pop() //在尾部加入刪除
4.隊列方法:shift() push() //shift() 在頭部刪除
反隊列方法:unshift() pop() //unshift()在頭部加入
5.重排序方法:
a.反轉(zhuǎn)數(shù)組reverse()
b.排序sort() //注意:sort()方法比較的是字符串,對于數(shù)值型會排序錯誤,并且會直接修改原數(shù)組
字符串排序解決方法:加入compare()函數(shù)進(jìn)行比較
6.操作方法:
a.創(chuàng)建副本以及合并concat()
可以創(chuàng)建原數(shù)組的副本并且將新添加的放到副本中
b.切割數(shù)組中的一部分slice()
c.大boss苛让,最強大的方法沟蔑,可以做刪除湿诊、插入、替換splice()
第一個參數(shù)為從第幾個位置開始瘦材,第二個參數(shù)為要刪除幾項厅须,第三個參數(shù)為需要加入的內(nèi)容,最后更改的是原數(shù)組a食棕,bcd是刪除掉的數(shù)組朗和。
7.查找元素位置方法:
a. indexOf()從前往后查:第一個參數(shù)為要查找的元素,第二個參數(shù)為查找的起始位置
b. lastIndexOf()從后往前查
8.迭代方法:
a. every() //每一項都符合返回true
b. some() //有一項符合就返回true
c. forEach() //無返回值
d. filter() //返回符合的原數(shù)據(jù)
e. map() //返回結(jié)果集
9.歸并方法:
reduce() reduceRight()二者方向不同簿晓,這兩個方法都會對數(shù)組進(jìn)行迭代眶拉,四個參數(shù)
Date類型
創(chuàng)建方式:var now=new Date();
返回表示日期的毫秒數(shù):
a. Date.parse()
b. Date.UTC()
獲取現(xiàn)在的時間:Date.now()
RegExp類型
創(chuàng)建方式:
a. 字面量方法:
var pattern= /bat/i;
b.構(gòu)造函數(shù)方法:
var pattern=new RegExp("bat","i");
g :全局模式
i :忽略大小寫
m:多行模式
Function類型
函數(shù)名是一個指向函數(shù)對象的指針!c径6撇恪!
1.創(chuàng)建方式:
a. 函數(shù)聲明:
function sum(a,b){
return a+b;
}
b.函數(shù)表達(dá)式:
var sum=function(a,b){
return a+b;
};
c.Function構(gòu)造函數(shù)
var sum=new Function("a","b","return a+b");
2.函數(shù)聲明與函數(shù)表達(dá)式的不同:
函數(shù)聲明提升
變量sum1提升皿曲,但是不會保存對函數(shù)的引用。
3.函數(shù)內(nèi)部屬性
- callee : 一個指針吴侦,指向擁有arguments對象的函數(shù)(arguments: 保存?zhèn)魅牒瘮?shù)的所有參數(shù)屋休,以數(shù)組形式保存)
function factorial(num){
if(num<=1)
return 1;
} else{
return num*arguments.callee(num-1); //argument.callee等價于factorial,好處:函數(shù)變名時對內(nèi)部沒有影響
}
}
- caller: 誰調(diào)用了該函數(shù),返回它的引用
誰調(diào)用了b()??哦备韧,是a(),那就返回a()的引用劫樟,也就是函數(shù)a()
4.函數(shù)屬性和方法:
a. 在特定的作用域中調(diào)用函數(shù): apply(作用域,參數(shù)數(shù)組)
call(作用域织堂,參數(shù))
用sayColor對象的方法作用于window和o對象上叠艳。(調(diào)用其他對象的方法)
b. bind():也是在特定的作用域中調(diào)用函數(shù),只是bind方法會產(chǎn)生一個函數(shù)實例易阳,只有對它調(diào)用時才會得到結(jié)果附较。所以如果想立即得到結(jié)果就用apply(),call(),如果不是潦俺,則使用bind().
基本包裝類型:
Boolean Number String(注意與boolean number string不同)
基本包裝類型:讀取基本類型時拒课,后臺會創(chuàng)建一個基本包裝類型對象,讓我們可以對其調(diào)用方法操作數(shù)據(jù)事示。
在執(zhí)行第二行代碼時早像,后臺會有以下過程:
a. 創(chuàng)建string類型的一個實例; var s1= new String("abcd");
b. 在實例上調(diào)用方法肖爵; var s2=s1.substring(s1);
c. 銷毀實例卢鹦。 var s1=null;
基本包裝類型與引用類型的區(qū)別:生存期不同。(引用類型只有在脫離作用域后才會銷毀劝堪,基本包裝類型只有在執(zhí)行該代碼時才存在冀自,一旦執(zhí)行完畢就銷毀)
構(gòu)造函數(shù)(有new)與轉(zhuǎn)型函數(shù)(無new)的不同:
String類型:
String對象提供了很多字符串操作的方法:
1.字符串拼接concat()
2.提取部分字符:slice() substring() substr()
3.確定字符串的位置indexOf() lastIndexOf()
4.刪除前后的空格trim()
5.字符串大小寫方法:toLowerCase() toUpperCase() toLocaleLowerCase() toLocaleUpperCase()
6.字符串匹配:match() search() replace() split()
7.字符串比較: localeCompare()
單體內(nèi)置對象
在執(zhí)行代碼之前揉稚,這些對象已經(jīng)存在了。
1.Global對象
eval()方法:解析字符串凡纳,會將字符串當(dāng)作實際的代碼執(zhí)行
eval("console.log(1)") //1
eval()中創(chuàng)建的變量和函數(shù)不會被提升窃植。
Global對象如何訪問:在Web瀏覽器中,Global對象是window對象的一部分荐糜。
2.Math對象:提供完成計算的屬性和方法巷怜。
最大最小max() min()
向上舍入向下舍入四舍五入 ceil() floor() round()
0-1隨機數(shù) random()
產(chǎn)生一個介于[low,up]之間的整數(shù)的函數(shù):
function selectFrom(low,up){
var choices=up-low+1;
return Math.floor(Math.random()*8+2);
}