是什么让ES6类语法比传统原型方法更好?
我应该用类替换所有当前对象,因为我不关心跨浏览器的东西吗?
答案 0 :(得分:2)
ES6类比基于原型的OO模式简单。拥有一个方便的声明形式使类模式更易于使用,并鼓励互操作性。类支持基于原型的继承,超级调用,实例和静态方法和构造函数。
答案 1 :(得分:0)
基于ES6类的语法比传统的原型方法好得多,
与构造函数和构造函数继承相比,类make 初学者更容易上手。
语言支持子类化。
内置构造函数是可子类化的。
不再需要继承库了;代码会变得更多 在框架之间移植。
它们为将来的高级功能提供了基础 (mixins等)。
因此,如果您不关心跨浏览器,那么请使用基于类的语法。
快乐的编码!!
答案 2 :(得分:0)
在大多数情况下,类只是旧有方法上的语法糖。我们待会儿再讲到这一点,但是类至少可以做一件事,而类可以用不能的旧方法:正确扩展Array和HTMLElement之类的内置构造函数。此外,当不使用new
进行调用时,类将自动引发,而旧方法是在构造函数中添加instanceof
检查。
现在使用糖,请考虑以下老式构造函数:
function Foo(bar) {
this._bar = bar;
Object.defineProperty(this, 'bar', {
get: function() { return this._bar },
set: function(value) {
console.log(value);
this._bar = value;
}
});
};
Foo.prototype.someMethod = function() { return this.bar + 5 };
Foo.someStaticMethod = function() { return 3 };
有点...丑陋。考虑等效的类:
class Foo {
static someStaticMethod () {
return 3;
}
constructor (bar) {
this._bar = bar;
}
get bar () {
return this._bar;
}
set bar (value) {
console.log(value);
}
someMethod () {
return this.bar + 5;
}
}
更清洁。是否应该重写现有代码更多的是折腾,但绝对可以将类用于新内容。