如何将匿名函数的返回值存储到JavaScript中的变量?

时间:2018-02-19 09:29:47

标签: javascript anonymous-function

我对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;
  }

我确信这是初学者的错误。所以有人可以请你纠正我吗?

3 个答案:

答案 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可以令人沮丧地学习,但是第一类功能实际上非常酷。