【发布时间】:2019-02-09 09:51:02
【问题描述】:
此代码假装覆盖函数:helper.highlight,该函数已经将 ### 添加到作为参数传递的字符串之前。在被覆盖后,它应该还会将### 附加到字符串中。
这里有一个重要的细节,就是函数的新实现(覆盖)需要利用原来的实现。
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
window.addEventListener('load', function(){
let output = document.querySelector('.message');
let result = helper.highlight('Hello World');
output.innerHTML = result;
});
helper = {
highlight: str => {
return '### ' + str;
}
};
// BEGIN OF YOUR APPROACH
prevHighlight = helper.highlight;
helper.highlight = str => {
str += ' ###';
str = prevHighlight(str);
return str;
};
// END OF YOUR APPROACH
</script>
</head>
<body>
<span class="message"></span>
</body>
</html>
代码正常运行,您可以在此处看到:
https://codesandbox.io/s/2o503978m0
我想知道的是:是否可以在不使用其他变量的情况下完成函数覆盖,就像我使用的那样:prevHighlight。正在寻找更清晰的方法来做到这一点。
对此有什么想法吗?
如果可能,请在上面 fork 我的codesandbox.io 并将新链接粘贴到您的答案中。
谢谢!
【问题讨论】:
标签: javascript html function oop