//can anyone explain why is my output undefined.I am trying to figure it out what are the issues over here i am sorry i am new to javascript.
function Person() {
this.name = 'Jack',
this.age = 25,
this.sayName = function () {
//enter code here this is accessible
console.log(this.age);
function innerFunc() {
// this refers to the global object
console.log(this.age);
console.log(this);
}
innerFunc();
}
}
let x = new Person();
x.sayName();
Output:
25
undefined
Window {}
The inner function innerFunc does not know what this means so it specifies the global this. You can bind this with innerFunc
function Person() {
this.name = 'Jack';
this.age = 25;
this.sayName = function() {
console.log(this.age);
function innerFunc() {
console.log(this.age);
console.log(this);
}
innerFunc.bind(this)();
}
}
let x = new Person();
x.sayName();