我想添加一些添加一些額外的邏輯(日誌記錄,跟蹤的東西)到SuperAgent的主要功能:https://github.com/visionmedia/superagent/blob/master/lib/client.js#L444延伸,以與自己的邏輯/旁路構造函數庫
所以我需要延長的SuperAgent,並希望提供相同的API,通過所有功能。我試圖通過不同的機制解決它:Object.create,原型,深拷貝,但我沒有得到它的工作。
我不想操縱superagent的源代碼,只需要它幷包裝它,添加我額外的邏輯並調用,通過原函數。我認爲這是一種面向方面。
//編輯 所以什麼都不用爲我工作是爲了繞過請求構造:
function Request(method, url) {
var self = this;
Emitter.call(this);
this._query = this._query || [];
this.method = method;
this.url = url;
this.header = {};
this._header = {};
this.on('end', function(){
try {
var res = new Response(self);
if ('HEAD' == method) res.text = null;
self.callback(null, res);
} catch(e) {
var err = new Error('Parser is unable to parse the response');
err.parse = true;
err.original = e;
self.callback(err);
}
});
}
請出示你已經嘗試了(整體)的代碼,不(只)原構造函數來發送。同時向我們展示*什麼*多餘的邏輯你想添加一個*當*應該成爲活動,最好與你包裝的構造函數和期望的輸出的示例調用。 – Bergi 2014-09-20 14:53:01
您可以在我提供的鏈接中看到整個代碼(整個文件),突出顯示構造函數的行。 – timaschew 2014-09-20 19:20:45
但這是原始代碼,不是嗎?我的意思是你的方法中的代碼不起作用:「* Object.create,prototype,deep copy *」 - 你做了什麼?他們怎麼沒有工作?沒有告訴我們你想要注入哪種邏輯,這甚至不是一個真正的問題。 – Bergi 2014-09-20 19:47:23