Как я могу сделать точечную нотацию функции, я имею в виду, как в функции jQuery. Пример: func ("test_string"). Func2 ("test_string2");

0
random12eves 9 Июл 2021 в 19:35

4 ответа

Лучший ответ

Вы просто возвращаете объект из первой функции, которая сама имеет функцию

function func(input){
  console.log("You called func with: " + input);
  return {
     func2: function(x){
         console.log("You called func2 with: " + x);
     }
  }
}


func("test_string").func2("test_string2");
0
Jamiec 9 Июл 2021 в 16:45

Чтобы воспользоваться преимуществами объединения методов, у вас должен быть базовый объект с несколькими методами, и вы должны возвращать фактическую ссылку на объект в каждом методе, поэтому предположим, что у вас есть объект User, который выглядит так:

class User {
  constructor(...args){
    // object construction goes here
  }
 func(...args){
  // Methods logic goes here
  // Here we should return the actual object (instance of User class)
  // which is referred by this
  return this;
 }
 func2(...args){
  // We do the same here 
  return this;
 }
}

// We create an instance of User
const user = new User();

// Now we can chain our methods since each method return our object
user.func(args).func2(args);
0
AMEZIANE Adnane 9 Июл 2021 в 16:48

JQuery либо возвращает jQuery, либо объект с методами. Итак, если вам нужна какая-то функция, которая будет консольным журналом и вернет себя, вы можете сделать что-то вроде этого:

const myObj = {
  logit: (str) => {
    console.log(str);
    return myObj;
  }
}



myObj.logit('hello').logit('world');
0
Alexander Nied 9 Июл 2021 в 16:40

Вы эффективно вызываете метод для возвращаемого значения func, поэтому просто сделайте возвращаемое значение (объект, который) содержит функцию-член func2.

function func(str){
  return { //return an object with func2
    func2(str2){console.log(`${str} ${str2}`);}
  }
}

func("test_string").func2("test_string2");
1
apple apple 9 Июл 2021 в 16:46