目录
call()和apply()
这两个方法都是函数对象的方法,需要通过函数对象来调用
function fun(){
alert("hi")
}
fun.call()
fun.apply()
fun()
都会调用该函数执行
在调用call和apply方法时可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行时的this
var obj={}
fun.call(obj)
如果函数中有this,则指向obj
function fun(a,b){
console.log(a,b)
}
call()方法可以将实参在对象之后依次传递,apply需要将实参封装到数组中统一传递
fun.call(obj,2,3) //23
fun.apply(obj,[2,3]) //23
this复习:
以函数形式调用时,this永远是window
以方法形式调用时,this是调用方法的对象
以构造函数的形式调用时,this是新创建的那个对象
以call和apply调用时,this是指定的那个对象
arguments
在调用函数时,浏览器每次都会传递两个隐含的参数:
- 函数的上下文对象this
- 封装实参的对象是arguments
- arguments是一个类数组对象,可以通过索引来操作数据,也可以获取长度
- 在调用函数时,我们所传递的实参都会在arguments中保存
- arguments.length可以用来获取实参的长度
- 即使不定义形参,也可以通过arguments来使用实参
arguments[0]表示第一个实参 arguments[1]表示第二个实参......
- arguments.callee这个属性对应一个函数对象,就是当前正在执行的函数对象
Date对象
在JS中使用date对象来表示一个事件
创建一个Date对象
var d = new Date()
console.log(d)
如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间
创建一个指定的时间对象
需要在构造函数中传递一个表示时间的字符串作为参数
格式: 月份/日/年 时:分:秒
var d2=new Date("12/03/2016")
var d2=new Date("12/03/2016 11:10:30")
getDate()
d2.getDate()
获取当前日期对象是几日 2
getDay()
d2.getDay()
返回对象是一周中的某天返回 0-6 ,0表示周日
获取周几
getMonth()
d2.getMonth()
获取月份 返回0-11 0表示一月 11表示十二月
getFullYear()
获取当前日期对象的年份
getYear只能获取简写年份 2016 则为16
getHours()
获取小时
getMinutes()
获取分钟
getSeconds()
获取秒
getTime()
获取当前日期对象的时间戳
返回一串数字
时间戳指从格林威治标准时间的1970年1月1日 0时0分0秒到当前时间所经过的毫秒数
1s=1000ms
目的是为了统一单位方便存储
计算机底层在保存时间时都是使用时间戳
输出负数是因为系统的北京时间和格林威治时间有八小时时差
获取当前时间的时间戳
var time=Date.now()
可以利用时间戳来测试代码执行的性能