簡體   English   中英

JavaScript和擴展的第三方API

[英]JavaScript and extending 3rd party API

我正在更新有關J​​avaScript的知識,並且堅持了一項課程任務。 我有API返回字符串...

API.workerName = function (worker) {
   return worker.firstName + ' ' + worker.lastName;
};

任務是給返回的字符串加上前綴,而不更改API,而是對其進行擴展。 我還必須避免復制和粘貼代碼,因為第三方代碼可以更改。 我應該重新使用它。 我所做的是在加載API后更改此功能...

API.workerName = function (worker) {
   return '(' + worker.position + ') ' + worker.firstName + ' ' + worker.lastName;
};

...但是我認為我做錯了。

要擴展該方法,您應該保存舊定義並從擴展名中調用它:

API.oldWorkerName = API.workerName;
API.workerName = function(worker) {
    return '(' + worker.position + ')' + API.oldWorkerName(worker);
};

也許這是您的課程正在尋找的內容:

API.workerPositionAndName = function(worker) {
    return '(' + worker.position + ')' + API.workerName(worker);
};

保存舊定義並使其對其他任何人都不可用的另一種好方法是使用IIFE創建閉合來進行以下操作:

API.workerName = (function() {
    var old = API.workerName;     // this old version is only available inside your new function
    return function(worker) {
        return '(' + worker.position + ')' + old(worker);
    }
})();

這是一個例子:

 API = { workerName: function (worker) { return worker.firstName + ' ' + worker.lastName; } }; API.workerName = (function () { var old = API.workerName; return function (worker) { return '(' + worker.position + ')' + old(worker); }; })(); alert(API.workerName({firstName: "Joe", lastName: "Blogs", position: "Lackey" })); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM