Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:向日期原型添加函数时,这不是日期对象_Javascript_Prototype - Fatal编程技术网

Javascript 未捕获类型错误:向日期原型添加函数时,这不是日期对象

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

我在google chrome和firefox中的代码有问题<代码>此设置日期(1)抛出未捕获的TypeError:这不是日期对象。我怎样才能修好它

我已经看过了,但是我没有找到任何解决我问题的方法

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规范。