JavaScript: как я могу передать аргумент частной функции в объекте? - PullRequest
0 голосов
/ 24 ноября 2018

как мне определить функцию внутри определения объекта, где я создаю объект из строки, извлекая информацию из строки?

Жало будет выглядеть так:

var theString = "несколько текстов, еще больше текста, еще текста";

Затем я создаю объект

someObject = new Reportlet (theString);

из этого кода:

* функция Reportlet (myString) {

var extractData (separator) = function(){
     var dummy;
     var a;
     var txt;
     if(myString.indexOf(separator) > -1){
        dummy = myString.split(separator);
        dummy = dummy[1];
        a = dummy.indexOf("<");
        if(a > 0){
          txt = dummy.substr(0,a);
        }
        else{
          txt = dummy;
        }
      }
      else{
          txt = "";
      }
      return(txt);  
}
this.abbrevText = extractData("<A>");
this.optText = extractData("<S>");
this.fullText = extractData("<L>");
this.impression = extractData("<I>");
this.keywords = extractData("<X>");

} *

Проблема заключается в том, как передать хет аргумент «разделитель» вприватная функция "extractData" внутри объекта?

Спасибо, Holx

1 Ответ

0 голосов
/ 24 ноября 2018

Вы должны сделать это:

function Reportlet(myString){

var extractData = function(separator) { // just do this
     var dummy;
     var a;
     var txt;
     if(myString.indexOf(separator) > -1){
        dummy = myString.split(separator);
        dummy = dummy[1];
        a = dummy.indexOf("<");
        if(a > 0){
          txt = dummy.substr(0,a);
        }
        else{
          txt = dummy;
        }
      }
      else{
          txt = "";
      }
      return(txt);  
}
this.abbrevText = extractData("<A>");
this.optText = extractData("<S>");
this.fullText = extractData("<L>");
this.impression = extractData("<I>");
this.keywords = extractData("<X>");
}

Но помните, что ссылка "this" внутри "extractData" отличается от "Reportlet", другими словами, внутри "extractData" ссылка "this"НЕ экземпляр "Reportlet".

...