Как передать возвращаемый тип в качестве параметра новой функции (как если бы функция находилась внутри возвращаемого типа)? js

avatar
jones_root
8 августа 2021 в 18:57
35
1
0

Допустим, что любой любой объект возвращает строку, например. И у меня есть следующее:

function alterString(str){
    return `${str} was altered!`
}

//I want call my method as if it were be inside the return type
let new_string = object.returnString().alterString();

Я уже делал это на C#, но даже не знаю названия для исследования

Источник
Bergi
8 августа 2021 в 21:27
0

В C# это называется метод расширения. В JS их нет.

Ответы (1)

avatar
navnath
8 августа 2021 в 19:31
0
String.prototype.alterString=function(){
  return `${this} was altered!`;
}
var obj = {
  returnString : function(){ return 'Hi'; }
};

let new_string = obj.returnString().alterString();

Или же вы можете добавить alterString() непосредственно в returnString(), как показано ниже.

var obj = {
   returnString : function(){
     this.text = "Hey";
   }
 };

 obj.returnString.prototype.alterString = function(){
   return `${this.text} was altered!`;
 }

 let new_string = new obj.returnString().alterString();
jones_root
8 августа 2021 в 20:15
0

Я думал, что есть "прямой путь" (проще), а не просто присвоение его прототипу, но все равно спасибо!

Bergi
8 августа 2021 в 21:28
0

Обратите внимание, что второй подход не "возвращает строку", а создает экземпляр returnString. Это довольно запутанно, избегайте этого шаблона или используйте собственные имена.

jones_root
8 августа 2021 в 23:02
0

Я понял это, первый был определенно тем, что я хотел!