gpt4 book ai didi

javascript - ECMAScript 6 类中静态方法的用途

转载 作者:数据小太阳 更新时间:2023-10-29 05:03:52 25 4
gpt4 key购买 nike

ES6 中的静态类方法应该处理 ES5 中的哪些问题?

Babel 文档在 its section regarding ES6 classes 中有以下示例,尽管它实际上并未说明此模式完成的任务。

Classes support prototype-based inheritance, super calls, instance and static methods and constructors

class SkinnedMesh extends THREE.Mesh {
constructor(geometry, materials) {
super(geometry, materials);

this.idMatrix = SkinnedMesh.defaultMatrix();
this.bones = [];
this.boneMatrices = [];
//...
}
update(camera) {
//...
super.update();
}
static defaultMatrix() {
return new THREE.Matrix4();
}
}

最佳答案

如果你用 Babel 编译 ES6 代码,并且某些类包含静态方法,ES5 生成的代码将只是将该静态函数添加到构造函数中。

所以,这个 ES6 ES2015 代码:

class A {
static doStuff() {}
}

...等于(在 ES5 中):

function A() { }
A.doStuff = function() { };

为什么需要静态函数?好吧,转换后的代码根本不支持静态,因为即使是函数也是对象和静态函数变成了构造函数的自有属性

静态函数或属性可用于实现工厂模式:

class A {
static create() {
// Specific factory method code
}
}

var instance = A.create();

无论如何,静态成员的使用是一个非常分散的话题,它超出了客观答案的范围。它有很多用例,这些用例对任何编程语言都是通用的。

关于javascript - ECMAScript 6 类中静态方法的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30826147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com