這兩個方法都是函數對象的方法,需要通過函數對象來調用,當對函數調用call和apply都會調用函數執行,在調用這兩個方法的時候,可以将第一個對象指定為第一個參數,此時這個對象會成為函數執行時候的this,改變目前執行的對象。
call方法可以将實參在對象之後依次傳遞。fun.call(obj,2,3);
apply方法需要将實參封裝在數組中統一傳遞。fun.apply(obj,[2,3]);
this情況:
(1)以函數形式調用時候,this永遠是window
(2)以方法形式建立時,this是調用方法的對象
(3)以構造函數的形式調用時候,this是新建立的那個對象
(4)使用call和apply調用時,this是指定的那個對象
在調用函數時候,浏覽器每次都會傳遞兩個隐含的參數
(1)this
(2)arguments(類數組對象),也可以通過索引操作資料,也可以擷取長度
argumnets.length用來擷取實參的長度
即使不定義形參,也可以通過arguments定義實參。
(3)arguments裡有一個屬性callee,就是目前正在指向的函數的對象
js中表示時間
//建立一個date對象,如果在構造函數中建立一個date對象,則會封裝為目前代碼執行的時間。
var d=new date();
console.log(d);
//建立一個指定時間的對象
//日期格式:月/日/年 時:分:秒
var d2=new date("12/03/2016 11:10:30");//月日年
console.log(d2);
相關的方法:
var date=d2..getdate();//擷取目前日期是幾号
var day=d2.getday();//目前日期是周幾
var month=d2.getmonth();//目前月份
var tear=d2.get fullyear();//傳回年份
var time=d2.gettime();//擷取時間戳,從1970年格林威治标準時間,一月一日零時零分零秒開始算ms(1s=1000ms)
計算機底層儲存時間用的都是時間戳
time=date.now();//結果是執行目前行對應的時間戳
math.pi;//圓周率
math.abs();//絕對值
math.ceil(1.4);//向上取整
math.floor(1.4);//向下取整
math.round(1.4);//四舍五入
math.random();//生成一個[0,1)之間的随機數
math.max(10,11,20);//取最大值
math.min(11,90,8);//最小值
math.pow(12,3);12的3次幂
math.sqrt(12);12開方
string()将基本資料類型轉為string
number()将基本資料類型轉為number
boolean()将基本資料類型轉為boolean
str.charat(i);//傳回任意位置字元
str.charcodeat();//傳回指定位置字元unicode編碼
formcharcode();//根據字元編碼擷取字元
concat();//連接配接兩個或多個字元串
str.indexof("h");傳回str第一次出現h的索引,沒找到傳回-1
str.indexof("h",2);//從下标為2處開始查找
str.lastindexof("h");//從後往前周遊尋找第一個出現的
str.lastindexof("h",2);//從下标為2處開始查找
str.slice(0,2);//不會影響源字元串,左閉索引右開索引,第二個參數省略,則會截取到後面的所有。
如果傳遞一個負數,則會從後往前查
substring(1,2);//截取字元串,左閉右開,和slice類似。不同的是這個方法不能接受負值,負值相當于0
如果前後大小反了,系統會自動調整
substr(0,2);//兩個參數分别是截取位置的索引,截取個數
split(",");//将字元串根據“,”拆分成數組。如果将空串作為拆分參數,則會将每個字元都拆分為數組中的一個元素
touppercase();//變大寫字串;