如何在函数上创建点国家?

vngu2lb8  于 2021-09-23  发布在  Java
关注(0)|答案(4)|浏览(338)

如何在函数上做点标记,我的意思是像jquery的函数一样。例子:

func("test_string").func2("test_string2");
g52tjvyc

g52tjvyc1#

您只需从第一个函数返回一个对象,该函数本身具有一个函数

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");
izkcnapc

izkcnapc2#

您可以在上有效地调用方法 func 的返回值,因此只需使返回值(一个对象)包含一个成员函数 func2 .

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

func("test_string").func2("test_string2");
zpjtge22

zpjtge223#

jquery要么返回jquery,要么返回带有方法的对象。因此,如果您需要一些能够控制日志并返回自身的函数,您可以执行以下操作:

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

myObj.logit('hello').logit('world');
0s7z1bwu

0s7z1bwu4#

为了利用方法链接的优势,您应该有一个包含多个方法的基本对象,并且您应该在每个方法中返回对象的实际引用,因此假设您有一个用户对象,看起来像:

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);

相关问题