javascript - 为什么构造函数可以调用 Javascript 中的方法?
问题描述
我对 Javascript 很陌生,并且来自经典的 OOP 背景。
我最近注意到的一件事是构造函数可以调用 Javascript 中的方法,例如Object.getPrototypeOf()
. 我想知道在这种情况下如何在构造函数中定义该方法?
解决方案
类和函数也是对象,对象上可以设置任意键值对。这并不完全常见,有时是代码异味,但这是可能的。值也可以是函数,所以如果你访问一个作为函数的属性,你可以调用它:
function FooFunc(arg) {
this.name = arg;
}
FooFunc.prop1 = 'val';
FooFunc.prop2 = () => console.log('prop2 invoked');
FooFunc.prop2();
class FooClass {
constructor(arg) {
this.name = arg;
}
}
FooClass.prop2 = () => console.log('prop2 invoked');
FooClass.prop2();
// Classes can also do this with the static keyword:
class FooClass2 {
constructor(arg) {
this.name = arg;
}
static prop2() {
console.log('prop2 invoked');
}
}
FooClass2.prop2();
// None of this interfers with creating and using normal instances:
const foo = new FooClass('bob');
console.log(foo.name);
推荐阅读
- firebase - Firebase 存储规则“未经授权”
- php - Laravel 更新数据库中的键和值
- python - “求解器没有正常退出” - Jupyter / Python3 / Ubuntu
- mysql - 选择图表数据
- pyspark - 使用 pyspark 在 Jupyter notebook 中读取 avro 文件时遇到问题
- firebase - 如何将房间数据与 Cloud Firestore 同步?
- x11 - 如何在 Manjaro i3 中永久设置屏幕布局 (arandr)?
- spring-boot - 将多对多 IN 语句映射到 JPA(Spring Boot)
- wordpress - 自定义帖子类型未出现在搜索结果中
- bash - 如何显示文件夹中的项目数 - Bash