Douglas Crockford谈JavaScript中的无类OOP
道格拉斯·克罗克福德(Douglas Crockford)对ES6的“更好的部分”进行了非常好的讨论。除其他事项外,他还提出了一些建议Douglas Crockford谈JavaScript中的无类OOP,javascript,oop,ecmascript-6,Javascript,Oop,Ecmascript 6,道格拉斯·克罗克福德(Douglas Crockford)对ES6的“更好的部分”进行了非常好的讨论。除其他事项外,他还提出了一些建议 在这里,他说他停止使用new、Object.create和this,但并没有真正解释替代方法。有人能告诉我这会是什么样子吗?你应该看整个视频,他在网站上解释道 这是一篇返回的文章。这里有一些很好的例子:如果你去了解他告诉你的情况。@AaditMShah:当他自己说他目前的方法完全是“无类面向对象编程”时,很难将他的立场描述为“放弃面向对象编程”,他的整个方法是基
在这里,他说他停止使用
new
、Object.create
和this
,但并没有真正解释替代方法。有人能告诉我这会是什么样子吗?你应该看整个视频,他在网站上解释道
这是一篇返回的文章。这里有一些很好的例子:如果你去了解他告诉你的情况。@AaditMShah:当他自己说他目前的方法完全是“无类面向对象编程”时,很难将他的立场描述为“放弃面向对象编程”,他的整个方法是基于封装数据和行为的对象,对我来说,这听起来很像面向对象编程。我在那个特定的演示中也看不到什么,至少,这表明他在支持函数式编程方面采取了强硬立场。@HMR他谴责ES6类为什么必须冻结对象?这不会停止继承吗?@Quinten:他正在冻结显示API的对象,即带有指向对象方法指针的匿名对象。所以我认为这就像冻结接口一样。@SMeaden,我想我忽略了一点,即解构另一个对象以继承它的方法。我在他的书(javascript如何工作)中读到,冻结主要是出于安全原因,因此方法不能更改。
function constructor(spec) {
let {member} = spec,
{other} = other_constructor(spec),
method = function () {
// accesses member, other, method, spec
};
return Object.freeze({
method,
other
});
}