javascript - 对象方法中的 this
问题描述
Function.prototype.defer = function(ms) {
let f = this;
console.log(this);
return function(...args) {
console.log(this);
setTimeout(() => f.apply(this, args), ms);
}
};
let user = {
name: "John",
sayHi() {
alert(this.name);
}
}
user.sayHi = user.sayHi.defer(1000);
user.sayHi();
你好!以下是这段代码的要点:我们必须将方法 defer(ms) 添加到所有函数的原型中,该方法返回一个包装器,将调用延迟 ms 毫秒。它必须像这样工作:
`function f(a, b) {
alert( a + b );
}
f.defer(1000)(1, 2); // shows 3 after 1 second`
因为它应该也适用于对象的方法,所以在这段代码中this明确分配给let f。我的问题是关于这个。为什么在第一个console.log 中这是sayHi 方法,而在第二个中是对象用户?感谢您的回答。
解决方案
推荐阅读
- mysql - 使用 brew mysql.server 安装 mysql@5.6 不是命令
- python - Python Selenium 选择带空格的 div 类
- javascript - Cheerio each() 函数行为异常
- java - Java 嵌套 for 循环(内部 for 循环中带有 if 语句)
- reactjs - React Native:如何将变量放入 require 而不给我一个错误
- javascript - 自动将“/”添加到日期的 Javascript 输入
- amazon-cognito - Congito 用户池的新注册默认为禁用
- javascript - 为演示目的创建站点的副本/会话
- python-3.x - 元组列表中的反转数字
- sqlite - 我们如何在 sqlite 数据库(表)中插入图像?