Javascript 未捕获类型错误:向日期原型添加函数时,这不是日期对象
我在google chrome和firefox中的代码有问题<代码>此设置日期(1)代码>抛出未捕获的TypeError:这不是日期对象。我怎样才能修好它 我已经看过了,但是我没有找到任何解决我问题的方法Javascript 未捕获类型错误:向日期原型添加函数时,这不是日期对象,javascript,prototype,Javascript,Prototype,我在google chrome和firefox中的代码有问题此设置日期(1)抛出未捕获的TypeError:这不是日期对象。我怎样才能修好它 我已经看过了,但是我没有找到任何解决我问题的方法 Date.prototype.setUTCDateOnly = function(date) { var tmp = new Date(date); this.setUTCDate(1); }; 我这样称呼它: var date = Date.prototype.setUTCDateOnl
Date.prototype.setUTCDateOnly = function(date) {
var tmp = new Date(date);
this.setUTCDate(1);
};
我这样称呼它:
var date = Date.prototype.setUTCDateOnly(item.date);
添加到构造函数的
.prototype
中的方法用于对从该构造函数创建的实例进行操作。而是在.prototype
对象本身上操作
为什么??因为在您的案例中,此
的值是通过查看
运算符的左侧来设置的。换句话说,调用方法的对象成为方法中的this
的值
这不是设置此的唯一方法,而是调用方法时的默认隐式行为
所以,您需要做的是像通常一样创建一个日期对象,然后对该对象调用您的方法,让它对该对象进行操作
var mydate = new Date();
mydate.setUTCDateOnly(item.date);
既然你这样称呼你的方法
Date.prototype.setUTCDateOnly(item.date);
然后此
值将为日期.原型
在ES5中,是一个日期对象:
日期原型对象本身就是一个日期对象(其[[Class]]是“Date”
),其[[PrimitiveValue]]是NaN
因此,您可以对其调用setUTCDate
。NaN
刚被内部转换成+0
然而,这在ES6中发生了变化,现在定义为
日期原型对象本身就是一个普通对象。这不是一个问题
日期实例,并且没有[[DateValue]]
因此,尝试对其调用
setUTCDate
将抛出。如何调用setUTCDateOnly()
?@RocketHazmat:var date=date.prototype.setUTCDateOnly(item.date);可能是重复的井在那里你去。它确实不是日期对象。你为什么这么叫它?我用了一个日历库。它的开发者不回答任何问题。所以我开始编辑代码。以上代码在我升级浏览器之前就已经生效了谢谢,因为我不知道新的google chrome将ECMA脚本引擎改为6@ППаа,这更像是一个渐进的过渡。新的浏览器版本越来越接近ES6规范。