2016-05-30 3 views
2

В приведенном ниже коде, я не могу позвонить 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 

Спасибо

+1

'return { job1: task1, job2: task2 };' – Tushar

ответ

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

Проблема, если я понимаю, что вы пытаетесь сделать правильно, вы вызываете функции перед тем возвращение объекта построена. Я предполагаю, что ваше намерение состояло в том, чтобы вернуть сами функции, а не возвращаемые значения.

Изменение выше кода (обратите внимание, что функции не называются):

return { 
    job1: task1, 
    job2: task2 
    }; 

Затем измените второй бит на:

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

Примечание мы вызываем функции в настоящее время.

1

Ваше возвращение результат выполнения task1 и task2 вместо функций, поэтому заменить:

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

Неверные возврат осуществляется

// 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()

Смежные вопросы