下面这一段js代码是什么意思呀?

function _classCallCheck(instance, Constructor) { 
      if (!(instance instanceof Constructor)) { 
          throw new TypeError("Cannot call a class as a function"); 
       } 
 }

function _possibleConstructorReturn(self, call) { 
    if (!self) {
     throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      } 
      return call && (typeof call === "object" || typeof call === "function") ? call : self; 
 }

function _inherits(subClass, superClass) { 
      if (typeof superClass !== "function" && superClass !== null) { 
           throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); 
      } 
      subClass.prototype = Object.create(superClass && superClass.prototype, {
       constructor: { value: subClass, enumerable: false, writable: true, configurable: true } 
       });
        if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; 
  }

var HeroHeader = function (_React$Component) {
  _inherits(HeroHeader, _React$Component);

  function HeroHeader() {
    _classCallCheck(this, HeroHeader);

    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

var _this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args)));

_this.state = { height: undefined };
_this._containerDOM = null;
_this._scrollPosition = 0;
_this.onScroll = _this.onScroll.bind(_this);
return _this;

}

阅读 3.6k
3 个回答

大体看了下,我看着像是用class XXX extends React.Component{}的类似的东西,里面用了继承等等

这这这…

这是React的ES6 Class写法被babel转义到ES5以后生成的一段代码,功能就是实现类的实例化和继承…

话说在哪儿扒的代码…不累么…

function _possibleConstructorReturn(self, call) { 
    if (!self) {--判断self 是否存在
     throw new ReferenceError("this hasn't been initialised - super() hasn't been called");---不存在抛出异常
      } 
      ---判断 call的类型,如果call是object或者function,条件为真返回call,要不然就返回self
      return call && (typeof call === "object" || typeof call === "function") ? call : self; 
 }

function _inherits(subClass, superClass) { 
      if (typeof superClass !== "function" && superClass !== null) { --判断subClass的类型必须不等为function且不为空,抛出异常
           throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); 
      } 
      --prototype:原型用法,不用 原型可以去查资料
      --将Object.create,赋予 subClass.prototyp
      subClass.prototype = Object.create(
      ---传入方法中的参数----
      superClass && superClass.prototype, {
       constructor: { value: subClass, enumerable: false, writable: true, configurable: true } 
       }
        ---传入方法中的参数----
       );
       ---判断superClass是否存在
        if (superClass) 
        ---存在值执行下面的方法
        Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;--判断Object.setPrototypeOf,然后值确定执行
  }

var HeroHeader = function (_React$Component) {
    --调用_inherits
  _inherits(HeroHeader, _React$Component);

  function HeroHeader() {
    ---调用_classCallCheck
    _classCallCheck(this, HeroHeader);
    ---遍历赋值
    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }
大体是这个样子,如果有错误希望能指正!
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题