首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >(JavaScript)前端小白还没学JS吗?跟着本文开启JS的旅程吧!(八):call和apply方法的差异;示例日期对象Date;Math数学对象、随机数

(JavaScript)前端小白还没学JS吗?跟着本文开启JS的旅程吧!(八):call和apply方法的差异;示例日期对象Date;Math数学对象、随机数

作者头像
用户11865655
发布2025-10-13 17:36:35
发布2025-10-13 17:36:35
600
代码可运行
举报
文章被收录于专栏:CSDN专栏CSDN专栏
运行总次数:0
代码可运行

call()和apply()

  • 这两个方法都是函数对象的方法,需要通过函数对象来调用
  • 当对函数调用call()和apply()都会去调用函数执行
  • 在调用call()与apply()可以将一个对象指定为第一个参数 此时这个对象将会成为函数执行时的this
  • call()方法可以将实参在对象之后依次传递
  • apply() 方法需要将实参封装到一个数组中统一传递

this的总结:

  1. 以函数的形式调用时,this始终都是window对象
  2. 以方法的形式调用时,this就是调用方法的对象
  3. 以构造方法的形式调用时,this是新创建的那个对象
  4. 使用call与apply调用时,this是指定的那个对象
代码语言:javascript
代码运行次数:0
运行
复制
function fun(){
//		console.log("这是一个函数");
	console.log(this);
}
//	fun();
//	fun.call();
//	fun.apply();
var obj={
	name:"xiaoming",
	age:23
};
//	fun.call(obj);
//	fun.apply(obj);

function fun1(a,b){
	console.log("a="+a+",b="+b);
	console.log(this);
}
fun1(12,34);
fun1.call(obj,12,34);
fun1.apply(obj,[12,34]);

arguments

在调用函数时,浏览器每次都会传递进来两个隐含的参数:

  1. 函数的上下文对象 this
  2. 封装实参的对象arguments
  • arguments是一个类数组对象,它也可以通过索引来操作数组,也可以获取长度
  • 在调用函数时,我们所传递的实参都会在arguments中保存
  • arguments.length可以用来获取实参的长度

我们即使不定义形参,也可以通过arguments来使用实参,比较麻烦

  • arguments[0] 表示第一个实参
  • arguments[1] 表示第二个实参 它里面有一个属性叫做callee,这个属性对应一个函数对象,就是当前正在执行的函数对象
代码语言:javascript
代码运行次数:0
运行
复制
function fun(){
//		console.log(this);
	console.log(arguments instanceof Array);
//		console.log(arguments[0]);
	console.log(arguments.callee);
}
fun(12,123,343,45,4);

日期对象Date

Date对象(内建对象)

  • 在JS中使用Date对象来表示一个时间
代码语言:javascript
代码运行次数:0
运行
复制
//创建一个Date对象
//如果时间使用构造函数创建一个Date对象,则会封装为当前代码执行的时间
var d=new Date();
console.log(d);
//创建一个指定的时间对象
//需要在构造函数中传递一个表示时间的字符串作为参数
var date2=new Date("2020-03-23 12:34:12");
console.log(date2);

getDate() - 获取当前日期对象时几日

代码语言:javascript
代码运行次数:0
运行
复制
var date=d.getDate();
console.log(date);

getMonth() - 获取当前日期对象的月份

  • 会返回一个0~11的值 0 表示 一月 1 表示二月 … 11 表示十二月
代码语言:javascript
代码运行次数:0
运行
复制
var month=d.getMonth();
console.log(month);//2 表三月

getFullYear() - 获取对象以四位数字返回年份

代码语言:javascript
代码运行次数:0
运行
复制
var year=d.getFullYear();
console.log(year);

getHours() - 获取当前日期对象的小时

代码语言:javascript
代码运行次数:0
运行
复制
var hours=d.getHours();

getMinutes() - 获取当前日期对象的分钟

代码语言:javascript
代码运行次数:0
运行
复制
var minute=d.getMinutes();

getSeconds() - 获取当前日期对象的秒数

代码语言:javascript
代码运行次数:0
运行
复制
var second=d.getSeconds();

判断 - 拼接 HH:MM:SS

代码语言:javascript
代码运行次数:0
运行
复制
hours= hours<=9? "0"+hours:hours;
minute= minute<=9? "0"+minute:minute;
second= second<=9? "0"+second:second;
var str=hours+":"+minute+":"+second;

getTime() - 获取当前日期对象的时间戳

  • 时间戳,指的是从格林威治标准时间的1970年1月1日,0时0分0秒 到当前日期所花费的毫秒数(1秒=1000毫秒)
  • 计算机底层在保存时间时使用都是时间戳
代码语言:javascript
代码运行次数:0
运行
复制
var time=d.getTime();
console.log(time);

算出距今已有多少年

代码语言:javascript
代码运行次数:0
运行
复制
// var minutes = 1000*60
// var hours = minutes*60
// var days = hours*24
// var years = days*365
// var d = new Date()
// var t = d.getTime()
// var y = t/years
console.log(time/1000/60/60/24/365);

var date3=new Date("1970/1/1 0:0:0");
time=date3.getTime();
console.log(time/1000/60/60);
//console.log(time/1000/60/60);//注意时差的问题 我们的时间是北京时间

//可以使用时间戳来测试代码的执行性能

获取当前的时间戳

代码语言:javascript
代码运行次数:0
运行
复制
var start=Date.now();
for(var i=0;i<100;i++){
	console.log(i);
}
var end=Date.now();
console.log("本次代码执行时间为:"+(end-start)+"毫秒");

说明:日期对象里面还有很多的方法,这里就不一一列举了请参考w3c手册

Math对象 - 数学

Math对象和其他对象不同,它不是一个构造函数, 它属于一个工具类不用创建对象,它里面封装了数学运算相关的属性和方法

  • 例如: Math.PI 表示圆周率(约等于3.14159)
代码语言:javascript
代码运行次数:0
运行
复制
console.log(Math.PI);

Math.abs(x) - 返回一个数的绝对值 Math.sin(x) - 返回一个数的正弦

代码语言:javascript
代码运行次数:0
运行
复制
var num=Math.abs(-10);
console.log(num);

Math.ceil() - 可以对一个数进行向上取整,小数位只要有值就自动进1 Math.floor() - 可以对一个数进行向下取整,小数部分会被舍掉 Math.round() - 可以对一个数进行四舍五入取整

代码语言:javascript
代码运行次数:0
运行
复制
//ceil向上取整
num=Math.ceil(1.4);
num=Math.ceil(1.0);
console.log(num);
//floor 向下取整
num=Math.floor(123.999);
console.log(num);
//round 四舍五入取整
num=Math.round(1.5);
console.log(num);

random() 随机数

Math.random()

  • 可以用来生成一个0-1之间的随机数
  • 可以用来生成一个0-10之间的随机数(整数) Math.round(Math.random()*10)
  • 可以用来生成一个0-X之间的随机数(整数) Math.round(Math.random()*X)
  • 可以用来生成一个1-10之间的随机数(整数) Math.round(Math.random()*9)+1
  • 可以用来生成一个1-X之间的随机数(整数) Math.round(Math.random()*(X-1))+1
  • 可以用来生成一个Y-X之间的随机数(整数) Math.round(Math.random()*(X-Y))+Y
代码语言:javascript
代码运行次数:0
运行
复制
var num=Math.random();
//	console.log(num);
for(var i=0;i<100;i++){
//		num=Math.random()*10;//0-10之间的随机数
	//num=Math.round(Math.random()*10);//0-10之间的随机整数
	//num=Math.round(Math.random()*9)+1;//1-10之间的随机数(整数)
	// 2到7之间的随机数
	//num=Math.round(Math.random()*5)+2;// 2到7之间的随机数(整数)
	// 5到23之间的随机数
	num=Math.round(Math.random()*18)+5;
	//console.log(num);
}

var max=Math.max(12,34,6,56);
var min=Math.min(12,34,6,56);
console.log(max);
console.log(min);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • call()和apply()
  • this的总结:
  • arguments
  • 日期对象Date
    • getDate() - 获取当前日期对象时几日
    • getMonth() - 获取当前日期对象的月份
    • getFullYear() - 获取对象以四位数字返回年份
    • getHours() - 获取当前日期对象的小时
    • getMinutes() - 获取当前日期对象的分钟
    • getSeconds() - 获取当前日期对象的秒数
    • 判断 - 拼接 HH:MM:SS
    • getTime() - 获取当前日期对象的时间戳
    • 算出距今已有多少年
    • 获取当前的时间戳
  • Math对象 - 数学
    • random() 随机数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档