我正在更新我对JavaScript的了解,并且我坚持了一个课程任务。 我有API返回字符串...
API.workerName = function (worker) {
return worker.firstName + ' ' + worker.lastName;
};
任务是为返回的字符串添加前缀而不是更改API,而是扩展它。我还必须避免复制和粘贴代码,因为第三方代码可以更改。我应该重新使用它。 我做的是在加载API后更改此函数...
API.workerName = function (worker) {
return '(' + worker.position + ') ' + worker.firstName + ' ' + worker.lastName;
};
......但我认为我做错了。
答案 0 :(得分:1)
要扩展方法,您应保存旧定义并从扩展程序中调用它:
API.oldWorkerName = API.workerName;
API.workerName = function(worker) {
return '(' + worker.position + ')' + API.oldWorkerName(worker);
};
或许这就是你的课程所需要的:
API.workerPositionAndName = function(worker) {
return '(' + worker.position + ')' + API.workerName(worker);
};
答案 1 :(得分:0)
保存旧定义并使其对其他人不可用的另一种巧妙方法是使用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" }));