'TypeError: Person.greet is not a function
function Person(name, age, greet) {
this.name = 'Josh';
this.age = 15;
this.greet = function(greeting) {
console.log('Hello I am ', this.name)
}
}
Person.greet();
I'm trying to get the console to show "Hello I am Josh", I get the same error saying Person.greet is not a function
Solution 1:[1]
This seems to be a constructor function, and not an object, hence, you need to call new to create instance of the constructor function before invoking the methods.
// on a side note, if you're not going to use the arguments, better remove them altogether
function Person(name, age, greet) {
this.name = 'Josh';
this.age = 15;
this.greet = function(greeting) {
console.log('Hello I am ', this.name)
}
}
const person = new Person();
person.greet();
Solution 2:[2]
function Person(name, age, greet) {
this.name = name;
this.age = age;
this.greet = function(greeting) {
console.log('Hello I am', this.name)
}
}
const max = new Person();
max.name = 'max';
max.age = 18;
max.greet(); // Hello I am max
I realised that I was using a factory function, I was meant to create an object using the new keyword
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Riaz |
