我对JavaScript非常陌生,所以请耐心等待。 以下是我的代码片段:
function Course(title, instructor, views){
this.title= title;
this.instructor = instructor;
this.views = views;
this.updateViews = function() {
return ++this.views;
};
}
var course1 = new Course('JS', 'Sarun', 0);
console.log(course1.updateViews);
然而,在执行时,我曾期望course1.updateViews的值为1.相反,我得到控制台中显示的整个函数如下:
ƒ () {
return ++this.views;
}
我确信这是初学者的错误。所以有人可以请你纠正我吗?
答案 0 :(得分:4)
所以有人可以请你纠正我吗?
您需要使用()
console.log(course1.updateViews());
function Course(title, instructor, views){
this.title= title;
this.instructor = instructor;
this.views = views;
this.updateViews = function() {
return ++this.views;
};
}
var course1 = new Course('JS', 'Sarun', 0);
console.log(course1.updateViews());

答案 1 :(得分:0)
因为在Course对象中,您将this.updateViews
声明为函数。
如果你想获得函数的返回值,你需要通过调用:
console.log(course1.updateViews());
如果你想updateViews
是静态属性,你可以改变声明这个的方式:
function Course(title, instructor, views){
this.title= title;
this.instructor = instructor;
this.views = views;
this.updateViews = ++this.views;
}
答案 2 :(得分:0)
可以将函数分配给JavaScript中的变量,以便所有函数声明都是静态的:
var functionName = function () {....}
您将该功能称为:
functionName();
也可以将函数赋值给对象中的值,因此上面的赋值是相同的。
this.updateViews = function () {...}
它的作用很像各种OO语言中的对象成员函数,您可以将其称为:
course1.updateViews();
进一步加强这种错觉,声明它的函数可以访问的所有变量仍然可用。此外,updateViews()中对此的引用引用父对象。因此,每次调用都会增加视图...它返回{1,2,3,4,5,...}并不总是2。
我希望这有点帮助,JS可以令人沮丧地学习,但是第一类功能实际上非常酷。