This commit is contained in:
Ilya Kantor 2019-10-02 10:42:50 +03:00
parent 0280d51f7a
commit 20c592f95e

View file

@ -15,3 +15,27 @@ function f(a, b) {
f.defer(1000)(1, 2); // shows 3 after 1 sec
```
Please note: we use `this` in `f.apply` to make our decoration work for object methods.
So if the wrapper function is called as an object method, then `this` is passed to the original method `f`.
```js run
Function.prototype.defer = function(ms) {
let f = this;
return function(...args) {
setTimeout(() => f.apply(this, args), ms);
}
};
let user = {
name: "John",
sayHi() {
alert(this.name);
}
}
user.sayHi = user.sayHi.defer(1000);
user.sayHi();
```