0

我想在委托给它时公开一个类似于 AngularJS $http API 的流畅服务 API。

就像是:

login(user).success(function(data, status) {
    // success case    
}).error(function(data, status) {
    // fail case
}).go();

该实现实际上会以某种方式调用 AngularJS $http API。

$http.post('/api/login', user).success(function(data, status) {
    // success case    
}).error(function(data, status) {
    // fail case
});

任何指针将不胜感激。

4

1 回答 1

3

this秘密就像为每个可链接的方法调用返回一样简单:

var MyApi = {
    something : function() {
        console.log('something');
        return this;
    },

    elseIsh : function() {
        console.log('else');
        return this;
    },

    again : function() {
        console.log('again');
        return this;
    }
}

MyApi.something().again().elseIsh().again();

并使用这样的新构造函数进行初始函数调用:

var does = function() {
    if(this.constructor !== does) {
        return new does();
    }
    console.log('does');
}

does.prototype.something = function() {
    console.log('something');
    return this;
}

does.prototype.elseIsh = function() {
    console.log('else');
    return this;
}

does.prototype.again = function() {
    console.log('again');
    return this;
}

does()​.again().something().elseIsh().again();​
于 2013-01-04T23:23:45.777 回答