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
相关产品推荐
相关产品推荐

