JavaScript小白最全学习笔记(8)

函数的方法call和apply 相同:
call和apply 这两个方法都是对函数对象的方法

function fun(){ alert("llll"); } //三种一样的效果 fun.apply(); //fun.call(); //fun();

可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行的this
function fun(){ alert(this.name); } var obj = {name:"obj"}; var obj2 ={name:"obj2"}; fun.apply(obj);

不同:
call()方法可以将实参在对象之后依次传递
var obj = {name:"obj"}; var obj2 ={name:"obj2"}; function fun(a,b){ console.log("a=" + a); console.log("b=" + b); } //一个一个传 fun.call(obj,2,3); //a=2 //b=3

apply()方法需要将实参封装到一个数组中统一传递
var obj = {name:"obj"}; var obj2 ={name:"obj2"}; function fun(a,b){ console.log("a=" + a); console.log("b=" + b); } //数组中 fun.call(obj,[2,3]); //a=2 //b=3

this的情况:
1.以函数形式调用时,this永远都是window
2.以方法的形式调用时,this是调用方法的对象
以构造函数的形式调用时,this是新创建的那个对象
使用apply和call调用时,this是指定的那个对象
数组类对象arguments 在调用函数时,浏览器每次都会传递两个隐含的参数
1.函数的上下文this
2.封装实参的对象arguments
auguments是一个类数组对象,不是数组
function fun(){ //检查是否为数组 // console.log(arguments instanceof Array); console.log(Array.isArray(arguments)); } //false

是一个类数组对象,也可以通过索引操作数据,也可以 获取长度
在调用函数时,我们所传递的实参都会在arguments中保存
arguments.length可以用来获取实参的长度
function fun(){ console.log(arguments.length); } fun("hello"); //1

我们即使不定义形参。也可以通过arguments来使用实参,只是比较麻烦arguments[0] 表示第一个实参
它里边有一个属性callee对应一个函数对象,就是当前正在指向函数的对象arguments.callee
JavaScript 的Date对象 表示一个时间
  • 当前时间
    如果直接使用构造函数创建date对象
    则会封装为当前代码执行的时间
var d = new Date(); console.log(d); //Date Mon Aug 17 2020 09:19:17 GMT+0800 (中国标准时间)

  • 创建一个指定的时间对象
    需要在构造函数中传递一个表示时间的字符串作为参数
    日期格式:月/日/年 时:分:秒
var d2 = new Date("12/03/2016 11:10:30"); console.log(d2); //Date Sat Dec 03 2016 11:10:30 GMT+0800 (中国标准时间)

  • getDate()获取日期对象是几号
var d = new Date(); console.log(d.getDate()); //17

  • getDay()获取日期对象是周几
    会返回一个0-6的值,0表示周日,1-6表示周1-6
var d = new Date(); console.log(d.getDay()); //1

  • getMonth()获取日期对象是几月
    会返回0-11的值,0表示1月,1表示2月。。。
var d = new Date(); console.log(d.getMonth()); //8

  • getFullYear()以四位数返回年份
  • d.getHours()获取日期对象是几时
    0~23
  • d.getMinutes()获取日期对象是几分
    0~59
  • d.getSeconds()获取日期对象是几秒
  • 【JavaScript小白最全学习笔记(8)】0~59
  • d.getMilliseconds()获取日期对象是几毫秒
    0~999
  • getTime()获取当前日期的时间戳
    时间戳:从格林威治标准时间的1970年1月1日 0时0分0秒到当前日期所花费的毫秒数
var d = new Date(); console.log(d.getTime()); //1597629722329

利用时间戳来测试代码执行的性能
var start = Date.now(); for(var i = 0; i < 100; i++){ console.log(i); } var finish = Date.now(); console.log(finish - start); //2

    推荐阅读