0

How to use arrow functions in object literal so that it will be able to access the elements in the object ?

// class person {
//     name = "nripesh";
//     surname = "neupane";
//     changeSurname = (newSurname) => {
//         this.surname = newSurname; // surname = newSurname also don't work.
//     }
// }
// const nripesh = new person();

const nripesh = {
  name: 'nripesh',
  surname: 'neupane',

  changeSurname: (newSurname) => {
    console.log(this);
    surname = newSurname;
  },
};

console.log(nripesh.surname);
nripesh.changeSurname('Pariyar');
console.log(nripesh.surname);

I was expecting to get 1st output:neupane 2nd output: Pariyar

What i am getting 1st output:neupane 2nd output: neupane

// In changeSurname method, this refer to global this which is undefined and using just surname is also undefined. This works dine when i use

changeSurname: function(newSurname) {
this.surname = newSurname;
}
Shrestha
  • 46
  • 4
  • 1
    Use a [method definition](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions) like this: `{ name: 'nripesh', surname: 'neupane', changeSurname(newSurname) { this.surname = newSurname } }` – adiga Dec 19 '22 at 11:37

0 Answers0