繁体   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