You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中toDateString()等内置Date方法原理及自定义方法实现

问题解答

一、Date内置方法的工作原理

当你通过new Date()创建一个日期实例后,这个实例会继承Date.prototype上的所有方法(包括toDateString)。

调用实例方法时,JavaScript会自动把当前实例对象绑定到方法内部的this关键字。这些内置方法的逻辑就是通过this访问当前实例存储的日期数据,不需要额外传参就能基于实例自身的信息返回结果。

比如你给出的代码:

var date = new Date("11/03/2022");
date.toDateString(); // 返回 'Thu Nov 03 2022'

这里调用date.toDateString()时,方法内部的this指向date这个实例,方法会读取this中存储的"2022年11月3日"这个日期数据,再转换成对应的字符串格式返回。

二、修改你的getDayName方法

你当前的代码里用new Date()创建了一个新的当前日期实例,所以返回的总是当前日期的星期名,而不是调用方法的那个实例的。只需要把new Date()换成this,就能让方法基于调用它的实例返回对应星期名:

Date.prototype.getDayName = function () {
    // this 指向调用该方法的Date实例
    return this.toDateString().split(" ")[0];
};

测试一下:

var date = new Date("11/03/2022");
date.getDayName(); // 返回 'Thu'

这样修改后,调用date.getDayName()时,this指向date实例,通过this.toDateString()拿到该实例的日期字符串,拆分后取第一个元素就是对应星期名称了。


内容的提问来源于stack exchange,提问作者vishvak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:10:29