函数的方法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
推荐阅读
- 操作系统|[译]从内部了解现代浏览器(1)
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- vue.js|vue中使用axios封装成request使用
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- JavaScript|JavaScript之DOM增删改查(重点)
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- javascript|javascript中的数据类型转换