javascripts是如何工作的?

javascripts是如何工作的?,javascript,ecmascript-6,prototype,extends,Javascript,Ecmascript 6,Prototype,Extends,Constructor.call()和Reflect.construct()之间的技术区别是什么 这是函数对象的不同用法。这与Example()和newexample()之间的区别相同 这两个表达式总是做不同的事情,解析为对象可能具有的两个不同的内部方法(名为[[call]]和[[construct]]])。ES6刚刚引入了新类型的函数,其中只有一个可以工作(箭头、方法:call;classconstructor:construct)。从函数创建的函数语法总是能够同时启用这两个函数(即使在不需要

Constructor.call()和Reflect.construct()之间的技术区别是什么

这是函数对象的不同用法。这与
Example()
newexample()
之间的区别相同


这两个表达式总是做不同的事情,解析为对象可能具有的两个不同的内部方法(名为
[[call]]
[[construct]]]
)。ES6刚刚引入了新类型的函数,其中只有一个可以工作(箭头、方法:call;
class
constructor:construct)。从
函数创建的函数
语法总是能够同时启用这两个函数(即使在不需要的时候)。

类和扩展只是老式“类”和“扩展”的语法糖。如果您使用transpiler将ES6转换为较旧的语法,那么您将确认这或多或少是正确的,那么为什么我只能使用extends关键字扩展内置类型(数组、函数)?看起来很相关。你的问题也与你的评论相反。怎么会这样?谢谢你的链接,这看起来真的很相关。你是说你只能使用
extends
关键字来扩展
Array
Function
(这不是真的,旧样式应该仍然有效)但是你的评论说你不能在任何内置类型上使用
extends
关键字,除了数组和函数(可能是真的,不确定)谢谢@Bergi的回答。我假设新操作符只是用一个新实例调用构造函数,就像在myType.call(Object.create(myType.prototype))中一样。新操作符不这样做而调用这个内部[[construct]]方法有什么特殊原因吗?@JohnSmith不完全是这样
new
正在调用[[construct]]方法,该方法使用旧的
function
构造函数进行实例构造和函数体执行(加上一些关于返回值的内容)。一些内置代码(如
Date
HTMLElement
)在整个过程中的工作方式都有所不同,现在在ES6中,它们是可扩展的。