Reputation: 783
Considering This:
var genericGreet = function() {
return "Hello, my name is " + this.name;
}
var andrew = {
name: "Andrew",
greet: genericGreet
}
var ryan = {
name: "Ryan",
greet: genericGreet
}
</script>
Why is it wrong to say greet: genericGreet()
or greet: genericGreet();
. The above is from an interactive quiz in a series of online learning for javascript at treehouse.com, and the interactive quiz is telling me that these would be incorrect, and I don't know why.
Upvotes: 0
Views: 58
Reputation: 239473
greet: genericGreet
will let greet
also to point to the object pointed by genericGreet
. So, greet
is now an alias for the same function. But when you say
greet: genericGreet()
you are making greet
point to the returned value of the genericGreet
function. If you intend to call greet
later on, then you should use
greet: genericGreet
only. Normally, people use Prototypal pattern to implement this
function PersonGreeter(personName) {
this.name = personName;
}
PersonGreeter.prototype.greet = function() {
return "Hello, my name is " + this.name;
};
var andrew = new PersonGreeter("Andrew");
console.log(andrew.greet());
var ryan = new PersonGreeter("Ryan");
console.log(ryan.greet());
Output
Hello, my name is Andrew
Hello, my name is Ryan
Upvotes: 1