Es6,在那里上课。我们有这样的方法:
ES6中的示例
class X{
go(){}
}
var y = new X();
var z = new y.go();
console.log(z)错误屏幕截图示例:

我们没有这个方法的属性原型(go),所以我们不能用这个方法创建新的对象。这就是事实。但我不明白为什么?为什么ES6中的javascript开发人员不让我使用这个功能。
反之亦然,在ES5中,我们可以从对象的方法创建新实例。当然,它也来自原型的方法
Es5中的示例
function X (){}
X.prototype.go = function(){}
var y = new X();
var z = new y.go();
console.log(z)发布于 2018-12-06 07:14:28
但我不明白为什么?
ES2015区分了两种类型的函数:
new的情况下调用的函数,即foo()。new调用的函数。函数是可调用的还是可构造的,这取决于它是如何定义的。规范只是规定通过方法语法声明的函数是不可构造的。
但这并不能解释这一决定背后的原因。我不能代表TC39委员会发言,但与ES2015的一个明确的努力是减少围绕函数的一些令人惊讶的行为。因此,如何使用某些类型的函数是强制执行的。方法在概念上不是构造函数,因此不能将其称为构造函数。
可构造函数:
可调用函数:
两者均:
https://stackoverflow.com/questions/53646225
复制相似问题