friend.sayHello = person.sayHello;


#1

Hello,

I will paste my code below, but I am a little confused about what the “friend.sayHello = person.sayHello” is doing. Any pointers would be great.

let person = {
  name: 'Tyron',
  age: 40,
  weekendAlarm: 'No alarms needed',
  weekAlarm: 'Alarm set to 7AM',
  
  sayHello: function() {
    return `Hello, my name is ${this.name}`;
  },
  
  sayGoodbye() {
    return 'Goodbye!';
  }
  
};

let friend = {
  name: 'Chris',
}
friend.sayHello = person.sayHello;

console.log(person.sayHello());

person.hobbies = ['Basketball', 'Coaching'];
person.hobbies = ['Basketball'];
console.log(person.hobbies);


console.log(person['name']);
console.log(person['age']);

let day = 'Tuesday';
let alarm;

if (day === 'Saturday' || day === 'Sunday' ) {
  alarm = 'weekendAlarm';
} else {
  alarm = 'weekAlarm';
}

console.log(person[alarm]);
console.log(friend.sayHello());

#2

our person object has a method named sayHello, now we want to add the same method to our friend object, instead of re-writing the whole method, we simply assign the sayHello method of person object to friend object, given the method the same name in the process, we could also do:


let friend = {
  name: 'Chris',
}
friend.anotherName = person.sayHello;
friend.anotherName();

maybe demonstrating with a function is easier, console.log() is very long to write so we could do:

a = console.log
a("hello world")

we just created another function, assigning it an already existing function


#3

OK. That makes sense. I can use methods within an object, on other objects. I would assume this is practical if the method is lengthy and confusing.

Are you saying I can set a variable like “a” to be my console.log so that I dont have to type it out every time? Is this good practice in real life application?

Thanks a bunch for the quick response.


#4

no, you can add a method from one object to another object. Then you can use the newly added method to the object to which you added, this is why i showed the function, you can create a duplicate of a function, by simply assigning it.

no, absolutely not. Its just to show how functions can be copied to a new variable