javascript - 如何使用中间 'chaining' 语句创建 'fluent' JavaScript API?

标签 javascript oop methods chaining

我正在创建 js sdk,我正在寻找创建用户 (API)/用户调用函数之类的;

var user = new user();

user.message.to("username").get.friendlist(function(data){
    //process data received from callback.
});

现在,我知道可以进行方法链接,并且我能够做出类似的东西

function User(Name) {
    this.uname = Name;
}

User.prototype = {
    constructor: User,

    MessageTo: function (username) {
        this.uname = username;
        return this;
    },

    getFriendList: function (callback) {
        callback("My list");
    }
}

我可以在创建 User() 对象后使用它,如下所示;

user.messageTo("username").getFriendList(function(data){
});

但我不知道如何像我正在寻找的那样获得方法调用;

user.message.to("username").get.friendlist(function(data){
});

Evan 我不确定这是否可能。感谢任何具有相同方面的帮助或指示。

最佳答案

正如其他成员评论的那样,还有其他选择可以做同样的事情,但我必须按照我需要的方式去做,这就是我们如何做到这一点的。

此解决方案符合我的要求,因此可能不适用于其他情况。

sdk.js

var User = function(){
UserName = null;
this.message = {

to : function(uname){

  UserName = uname   
  alert('called to '+uname);

  this.get = {
    friendlist : function(callback){
      console.log('called friendlist');
        callback('Hello friendlist :: '+ UserName);
    }
  }
  return this;
  }
  };
}

并像这样使用它;

  var user1 = new User();

  user1.message.to('H.Mahida').get.friendlist(function(data){
      alert('call back says '+ data);
  });

这里是 jsfiddle 的链接

希望它可能对某些人有用或指导相同的方向...!!!

关于javascript - 如何使用中间 'chaining' 语句创建 'fluent' JavaScript API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341505/

相关文章:

php - Drupal 8 数据库插入中的 fatal error : Call to undefined method,

python - django模板中显示自己的方法

javascript - 使用 Node Express 应用程序在 Zabbix api 上提取数据

javascript - 以函数方式获取子集

C# 调用待办事项列表的类

C++ 继承 : Calling the virtual function of a base class using an instance of a derived class

java - 如何对二维数组进行列和和行和方法?

Java异步方法调用

javascript - React - 将对象转换为具有属性的对象数组

javascript - 加载路由 : TypeError: Cannot set property 'typeKey' of undefined 时出现 Ember Data 1.0 错误