【发布时间】:2019-04-22 13:55:47
【问题描述】:
我把下面的代码放到babel:
class Animal {}
class Rabbit extends Animal {}
并将其转换为以下内容:
"use strict";
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
subClass.__proto__ = superClass;
}
var Animal = function Animal() {};
var Rabbit =
/*#__PURE__*/
function(_Animal) {
_inheritsLoose(Rabbit, _Animal);
function Rabbit() {
return _Animal.apply(this, arguments) || this;
}
return Rabbit;
}(Animal);
问题是为什么它使用这一行 subClass.__proto__ = superClass; 并且根据文档 __proto__ 可以是对象或 null 但这里 superClass 是一个函数。
我的问题不是重复的,因为我不是在询问 object.prototype=function.prototype,而是在询问 __proto__ = typeof function 而不是 object 或 null 规范
【问题讨论】:
-
可能是静态属性
标签: javascript ecmascript-6 prototype babeljs