FAQ: Objects - Methods

This community-built FAQ covers the “Methods” exercise from the lesson “Objects”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development

Introduction To JavaScript

FAQs on the exercise Methods

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

Below the retreatMessage variable in the code editor, create an alienShip object. It should contain a method .retreat() which will console.log() the retreatMessage .

let retreatMessage = ‘We no longer wish to conquer your planet. It is full of dogs, which we do not care for.’;

// Write your code below

Help

The lesson gives a good example…

With the new method syntax introduced in ES6 we can omit the colon and the function keyword.

const alienShip = {
  invade () { 
    console.log(...)
  }
};

The ellipsis indicates where your content will be written in your method.


=> i get this undefined why <=

It’s a response from the console to the last instruction. console.log() has no return, and as the final instruction, it is that response that gets logged (undefined). Ignore it.

2 Likes

I wouldn’t say ignore it.
You’re incorrectly console logging a call to the functions. What you need to do is just call the functions–those functions each execute their own console log message.

alienShip.retreat();
alienShip.takeOff();
16 Likes

It says We can include methods in our object literals by creating ordinary, comma-separated key-value pairs.
shouldn’t it be colon-separated key-value pairs?

We’re to understand that key-value pairs are separated by commas, and may be numerous. key and value are separated by a colon since they are bound to each other to form a property. Properties are essentially named objects that are attributes of an object.

When we write,

let a = 42;

we’ve declared an a attribute on the window object with a value of 42.

console.log(window.a)    // <- 42
1 Like

Thanks a lot… I understand this now.
Key-value pairs are separated by commas the same way methods being included to object literals are separated because the method name is seen as the key while the function is the value.
Thanks again

1 Like
function f() {
    return 'foo'
}
 > window.f()
<- foo

I have a serious question. Why does it say “We no longer wish to conquer your planet. It is full of DOGS which we do not CARE FOR!?”
WHO TF AINT CARIN FOR DOGS!?

4 Likes

Perhaps the aliens are either Felidae, Leporidae or Sciuridae to whom the Canidae is a natural antagonist.

4 Likes

what if they just wiped the dogs off the planet rip dogs xd idc

All the more reason we should hope that aliens who arrive here don’t see Hominidae as their antagonist.

3 Likes

Why did the hint say we should use objectName.methodName then?

What is the difference between the two

let alienShip = { retreat() {
};
And

alienShip.retreat();

The above is written as,

object.attribute (method)

which means object is an instance of a class, or it has been created by a constructor function, or it is a plain object with a built in method.

The method is inherited from either the parent class or the constructor prototype.

class Spaceship {
  constructor(name) {
    this.name = name;
  }
  retreat () {
    console.log("Retreat! Retreat!")
  }
}

let alienShip = new Spaceship('Explorer');
alienShip.retreat()
// Retreat! Retreat!

Will raise a syntax error. When a block is assigned to a variable, it must follow plain object syntax. The above is neither an object nor a function.

Thanks Dude! I was wondering myself why i got undefined

What if i wanted to invoke 2 functions on the same line?

Please give us an example of what it is you are trying to do.

If you want the output of one function to be the input for another, then

 foo(bar(x))

bar return value becomes foo argument.