87,993
社区成员
发帖
与我相关
我的任务
分享
// ES6
class A extends B {}
console.log(new A)
下面是通过babel后得到的ES5
// ES6 => babel => ES5
"use strict";
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
var A =
/*#__PURE__*/
function (_B) {
_inherits(A, _B);
function A() {
return _getPrototypeOf(A).apply(this, arguments);
}
return A;
}(B);
console.log(new A());
底层基础决定上层建筑~
一般在进行js对象封装时,可能用得到,可以让你的对象结构更为清晰,代码更为简洁,便于阅读和维护。
不过现在前端也在模块化、组件化,封装也成了常态,熟悉原型链和继承,可能也是必须的吧。
不管怎么说,熟悉这个,说明对js工作原理理解较为深入,可以用于评估一个人的js水平。