无法从实例名称

时间:2016-05-30 13:52:54

标签: javascript

在下面的代码中,我无法拨打job1&由job2返回的jobContainer

// Code goes here

var jobContainer = function() {

  var count = 0;

  var task1 = function() {
    count += 1;
    console.log("inside task1 " + count);
  };

  var task2 = function() {
    count += 1;
    console.log("inside task2 " + count);
  };

  return {
    job1: task1(),
    job2: task2()
  };

};

var tasker = jobContainer();
tasker.job1 // not working
tasker.job2 // not working
tasker.job2 // not working

输出:

inside task1 1
inside task2 2

谢谢

3 个答案:

答案 0 :(得分:2)

返回错误

// Code goes here
var jobContainer = function() {
  var count = 0;

  var task1 = function() {
    count += 1;
    console.log("inside task1 " + count);
  };

  var task2 = function() {
    count += 1;
    console.log("inside task2 " + count);
  };

  return {
    job1: task1,
    job2: task2
  };

};

var tasker = jobContainer();
tasker.job1()  
tasker.job2() 
tasker.job2()  

答案 1 :(得分:1)

您的执行返回结果task1task2而不是函数,所以请替换:

return {
  job1: task1(),
  job2: task2()
};

return {
  job1: task1,
  job2: task2
};
var tasker = jobContainer();
tasker.job1() // inside task1 1
tasker.job2() // inside task2 2
tasker.job2() // inside task2 3

祝你好运!

答案 2 :(得分:1)

return {
    job1: task1(),
    job2: task2()
};

问题是,如果我理解你正在尝试正确执行的操作,那么在构造返回对象之前,你将调用函数。我猜你的意图是返回函数本身,而不是返回值。

将上述代码更改为(注意未调用函数):

return {
    job1: task1,
    job2: task2
  };

然后将第二位更改为:

var tasker = jobContainer();
tasker.job1()
tasker.job2()
tasker.job2()

注意我们现在正在调用这些函数。