为什么第二次控制台时视图没有更新.log(当然)


var course = new Object();
var course = {
title: "JavaScript Essential Training",
instructor: "Morten Rand-Hendriksen",
level: 1,
published: true,
views: 0,
updateViews: function() {
return ++course.views;
},
};
console.log(course);
console.log(course);

您正在为变量课程分配一个空对象。

var course = new Object();

现在,您正在为一个带有属性的对象分配该对象。

var course = {
title: "JavaScript Essential Training",
instructor: "Morten Rand-Hendriksen",
level: 1,
published: true,
views: 0,
updateViews: function() {
return ++course.views;
},
};

在这里,一个对象被分配给变量课程,updateViews方法不会调用,因为这是一个初始化。因此,如果要更新视图,则应从变量课程中调用updateViews。喜欢这个

console.log(course.updateViews());

如果您可以发布实际看到的内容,那将会有所帮助。但是,您肯定要调用 updateViews(( 来更改视图。仅要求它写出对象的当前值不会调用对象上的每个方法。

只是控制台。记录对象不会更新视图。

您的第一个声明也没有用。

如果你愿意,你可以这样做:

var course = {
title: "JavaScript Essential Training",
instructor: "Morten Rand-Hendriksen",
level: 1,
published: true,
views: 0,
updateViews: function() {
return ++course.views;
},
toString : function() { this.updateViews(); return this }
};
console.log(course.toString());
console.log(course.toString());

我找到了更详细的答案

控制台.log是否调用对象的 toString 方法?