Home > Mobile >  TypeError: Person.greet is not a function
TypeError: Person.greet is not a function

Time:03-31

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

CodePudding user response:

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

CodePudding user response:

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

  • Related