Can I add using prototypes function for a class instance?
so I'll be able to use this
or __proto__
keyword inside my method, for example:
class PersonClass {
name: string;
constructor(name: string) {
this.name = name;
}
sayHello() {
console.log(`hello, my name is ${this.name} and I'm a ${this.type}`);
}
}
PersonClass.prototype.type = "human";
PersonClass.prototype.PrintType = () => {
console.log(`I'm a ${PersonClass.prototype.type}`);
};
const aria = new PersonClass("Ned Stark");
aria.sayHello();
aria.PrintType();
this code works of course, but I wish to add something like
PersonClass.prototype.SayHello2 = () => {
console.log(this.name, caller.__proto__.name);
};
which of course fails.
is it even possible?
CodePudding user response:
Your SayHello2
should be a non-arrow function to access the properties you are looking for:
PersonClass.prototype.SayHello2 = function () {
console.log(this.name, this.type);
};
which produces:
"Ned Stark", "human"
Don't forget you also have access to the constructor
property of an instance as well, allowing you to access everything associate with your classes.
CodePudding user response:
This should works:
PersonClass.prototype.SayHello2 = function() {
console.log(this.name);
};
aria.SayHello2(); // "Ned Stark"