25/30 - Am I interpreting this correctly?! So confusing! Ugh


for the line of code that says: var myBalanceMethod = john.askTeller();

Can I interpret it as follows? Keep in mind I am writing it all step-by-step:

var myBalanceMethod = john.askTeller();

var myBalanceMethod = function () { returnBalance; };

var myBalanceMethod = function () { { function () { return bankBalance; }; };

//So in the end, it means the var myBalanceMethod is a function that contains a function that returns the value of 7500.

function Person(first,last,age) {
   this.firstname = first;
   this.lastname = last;
   this.age = age;
   var bankBalance = 7500;
   var returnBalance = function() {
      return bankBalance;
   // create the new function here
   this.askTeller = function () {
       return returnBalance;

var john = new Person('John','Smith',30);
var myBalanceMethod = john.askTeller();
var myBalance = myBalanceMethod();



++ 1/2 ++ 25/30 bankbalance explained
What they are trying to make clear,
is that after calling the public-accessable askTeller method

you still don't have the actual value of the property-key -bankBalance

because the askTeller-function returns the name of a function

this function must be executed and then you get the Value of bankBalance.

A two-step approach, as you have to execute-twice.

As the () sign means execute, you could also get the result by using

console.log( john.askTeller()() );

++ 2/2 +++ 25/30 bankbalance explained
1 You have to create a so-called public askTeller Method...
meaning you have to use the this-keyword and NOT the var-keyword

2 the askTeller Method should return returnBalance
and NOT as you are doing returning the bankBalance

= = = = = = = = = = = = = = = = = = = =

Here is the wording of the exercise...read it once more....

Private Methods

Why did that code in [24] work ?
An object's private variables
can only be accessed by other methods
that are part of that same object.

So, in [24] we just used an object's public method
to access a private variable!

Methods can also be private within a class and inaccessible outside of the class. Changing
from the last exercise to
var returnBalance
makes this method private.

If you run the program trying to access the method
you would get an undefined error this time.

The way to access a private method
is similar to accessing a private variable.

You must create a public method for the class, using the this-keyword
that returns the private method.


Create a method called askTeller within the Person class
that returns the returnBalance method.

This means that it returns the method itself
and NOT the result of calling that method.
So you should NOT have parentheses after returnBalance.

Because askTeller returns a method,
we need to call it to make it any use.
This is what var myBalance = myBalanceMethod(); does.


Your method should resemble how we defined getBalance last time—
you should use
this.askTeller = function() { }.

Don't declare askTeller with var.

You return method the same way
that you would return simple variables.
Be careful not to call the method though
and leave out parentheses in your return statement!


This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.