- Mastering JavaScript Functional Programming
- Federico Kereki
- 148字
- 2021-07-02 22:41:10
Solution #6 - redefine the handler
Another idea: instead of changing anything in the button, let's have the event handler change itself. The trick is in the second line; by assigning a new value to the billTheUser variable, we are actually dynamically changing what the function does! The first time you call the function, it will do its thing... but it will also change itself out of existence, by giving its name to a new function:
function billTheUser(some, sales, data) {
billTheUser = function() {};
window.alert("Billing the user...");
// actually bill the user
}
There's a special trick in the solution. Functions are global, so the line billTheUser=... actually changes the function's inner workings; from that point on, billTheUser will be the new (null) function. This solution is still hard to test. Even worse, how would you restore the functionality of billTheUser, setting it back to its original objective?
推薦閱讀
- Mastering Ext JS(Second Edition)
- Vue.js 3.x快速入門
- Python科學計算(第2版)
- 密碼學原理與Java實現
- Learning Linux Binary Analysis
- Web Application Development with MEAN
- Learning Hunk
- Learning SciPy for Numerical and Scientific Computing(Second Edition)
- HTML5權威指南
- SQL Server 2008 R2數據庫技術及應用(第3版)
- Getting Started with Polymer
- Mastering ASP.NET Core 2.0
- 面向物聯網的Android應用開發與實踐
- Game Development Patterns and Best Practices
- Mastering Magento Theme Design