javascript - 当函数被分配为属性时,绑定有效,但为什么呢?
问题描述
我试图了解绑定在 Javascript 中的工作原理以及以下示例的工作原理。但是当我尝试使用this.numbers.map(this.doSomething)
它时,它会给我一个错误,因为doSomething
它是被静态调用的。为了让它再次工作,我将不得不使用第二个例子,但我不明白到底发生了什么。有人有一些链接/文档可以用来更好地理解这一点吗?
第一个例子:
export class SomeClass{
numbers = [1, 2, 3];
showNumber = (value: number) => console.log(`number is:`, value);
processNumbers = () => {
const a = this.numbers.map(b => this.doSomething(b));
// this gives me the error: 'showNumber' doesn't exist
// const a = this.numbers.map(this.doSomething);
// do something with a
}
private doSomething(value: number) {
this.showNumber(value);
}
}
const someClass = new SomeClass();
someClass.processNumbers();
第二个例子:
export class SomeClass{
numbers = [1, 2, 3];
showNumber = (value: number) => console.log(`number is:`, value);
processNumbers = () => {
const a = this.numbers.map(this.doSomething);
// do something with a
}
private doSomething = (value: number) => {
this.showNumber(value);
}
}
const someClass = new SomeClass();
someClass.processNumbers();
解决方案
推荐阅读
- c++ - C++ 浮点数比较
- javascript - 使用 math.random 函数的多个输出
- python - 使用自定义权重进行训练
- facebook - 如何将人们从我的网站重定向到我的 Facebook 帐户?
- php - 上传codeigniter时将文件重复到2 copise
- database - 如何在颤动中从插入到 sqflite 数据库中返回 id
- flutter - 卡片内容器的边框半径
- sql - 如何计算呈现 Django 管理页面所需的 SQL 查询数?
- react-native - React-Native init 在安装所需的 cocoapods 时卡住了
- vue.js - 在插件 vue 中使用 mixins