• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

166
Views
Add a method to a string variable's prototype

Expected: When a variable is created using createGreetable it should have an additional property greet set by greetable(text). The usual string methods should still be callable on this variable.

What I Tried:

const greetablePrototype = {
  greetable: function(greeting) {
    this.greet = `${greeting}, ${ this.valueOf() }!`
  }
}

function createGreetable(str) {
  const result = new String(str);
  Object.setPrototypeOf(result, greetablePrototype)
  return result;
}

const t = new createGreetable("world");
t.greetable("hello");
console.log(t.greet);

console.log(t.length);

Output:

hello, [object String]!
5

Expected Output:

hello, world!
5
almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

You can extend the string class:

class Greetable extends String {
  greet (greeting) {
    return `${greeting}, ${this}!`;
  }
}

const g = new Greetable('world');
g.greet('hello'); // hello, world!
g.length // 5
almost 3 years ago · Juan Pablo Isaza Report

0

A few modifications to your code were needed to get it to work as intended:

  1. Adding this.length in the greetable prototype function to update the string length each time (remember this is a string object).
  2. Changing the const result line to this.greet in the constructor function, setting the prototype of this to the greetablePrototype as intended, then returning the instance of our object return this.

const greetablePrototype = {
  greetable: function(greeting) {
    this.greet = `${greeting}, ${this.greet}!`
    this.length = this.greet.length;
  }
}

function createGreetable(str) {
  this.greet = String(str);
  Object.setPrototypeOf(this, greetablePrototype)
  return this;
}

const t = new createGreetable("world");
t.greetable("hello");
console.log(t.greet);
console.log(t.length);

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error