站点工具

用户工具


Function.prototype 居然是一个函数对象

ECMA262

The Function prototype object is itself a Function object (its [[Class]] is "Function") that, when invoked, accepts any arguments and returns undefined.

翻译:Function.prototype 对象是一个函数对象(它的 [[Class]] 是 Function),Function.prototype 可以被调用,它接受任何参数,并且返回 undefined。

但是 Function.prototype 的原型是 Object.prototype。

也就是说

  1. Function.prototype 是一个函数
  2. 但是 Function.prototype.__proto__ === Object.prototype

emmmm...还挺奇葩的。

文档里还说了这样做的原因:

The Function prototype object is specified to be a function object to ensure compatibility with ECMAScript code that was created prior to the ECMAScript 2015 specification.

翻译:这么做是为了兼容之前的 ECMAScript 代码。

emmmm...还挺合理的。

饥人谷一直致力于培养有灵魂的编程者,打造专业有爱的国内前端技术圈子。如造梦师一般帮助近千名不甘寂寞的追梦人把编程梦变为现实,他们以饥人谷为起点,足迹遍布包括facebook、阿里巴巴、百度、网易、京东、今日头条、大众美团、饿了么、ofo在内的国内外大小企业。 了解培训课程:加微信 xiedaimala03,官网:https://jirengu.com

本文作者:饥人谷方应杭老师

若愚 · 2023/02/09 11:43 · function.prototype_居然是一个函数对象.txt