Writing Methods

  • As mentioned earlier, objects can have methods that we can invoke to perform some kind of function or action on the object
  • Methods are stored as an object property, but are programmed by defining a new function to assign the property to
  • To look at a few examples, we will use the employee object below:
  • The employee object will represent an employee of our imaginary company, Katie Johnson.
  • This object stores the information for employee Katie Johnson, with properties for her name, ID, phone number, address, hourly wage, and number of hours worked this week.
  • The last property of the employee object will be the method called “printEmployeeInfo”
  • The printEmployeeInfo method declares a new function that returns the employee ID and full name in a formatted order
  • You’ll notice that the method uses a new keyword we haven’t worked with yet, “this”
  • When used in an object method, the ‘this’ keyword refers to the object in context.
  • On line 30, this.firstName is equivalent to saying employee.firstName:
let employee = {
  firstName: "Katie",
  lastName: "Johnson",
  employeeID: 295025,
  phone: 4560001234,
  address: "42 Wallaby Way",
  wage: 13.50,
  hoursWorked: 25,
  printEmployeeInfo: function () {
    return "Employee #" + this.employeeID + " : " + this.firstName + " " + this.lastName;
  }
};

console.log(employee.printEmployeeInfo());
  • Next, lets add a method to the employee object that calculates their weekly pay
  • This method will be called “paycheck” and will return the product of the employee object’s wage property and the employee object’s hoursWorked property:
employee.paycheck = function () {
  return "$" + (this.wage * this.hoursWorked);
}
  • Now, we can invoke the paycheck method like so:
let income = employee.paycheck();
console.log(income);
  • or:
console.log("Employee #" + employee.employeeID + " worked " 
  + employee.hoursWorked + " hours this week and earned " 
  + employee.paycheck());
  • Try updating the hoursWorked property to a number greater than 25, and invoking the paycheck method again:
employee.hoursWorked = 40;
console.log("Employee #" + employee.employeeID + " worked " +
  employee.hoursWorked + " hours this week and earned " + 
  employee.paycheck());
  • Finally, lets write an employee contact information method.
  • The method will be named “contact” and will print the information to the console in this order:
  • Employee #ID - Last Name, First Name , Phone: (###)-###-#### , Address: __________
employee.contact = function () {
  return "Employee #" + this.employeeID + " - " + this.lastName + 
  ", " + this.firstName + " , Phone: (" + 
  this.phone.toString().slice(0, 3) + ")-" + this.phone.toString().slice(3, 6) + 
  "-" + this.phone.toString().slice(6, 10) + " , Address: " + this.address;
}
console.log(employee.contact());

Exercises

back