JavaScript和扩展第三方API

JavaScript and extending 3rd party API

本文关键字:API 第三方 扩展 JavaScript      更新时间:2023-09-26

我正在更新我对JavaScript的了解,我只完成了一节课的任务。我有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" }));