Javascript使用Modular Pattern覆盖继承的变量

时间:2016-07-27 15:37:42

标签: javascript

使用JavaScript模块化模式,我试图通过它的子节点覆盖父类中定义的变量。

我已将这些类定义为附件。

        var parentClass = (function () {
            var _tabsPerCall;
            var _nextCall;
            var _tabsArray;

            var loadNext = function () {
                var nextCallAmount = _tabsPerCall + _tabsPerCall;
                _nextCall = (_tabsArray.length - nextCallAmount) >= 0 ? nextCallAmount : _tabsArray.length;
            };

            return {
                get: function () {
                    return _tabsArray.slice(0, _nextCall);
                },
                clicked: function (tabIndex) {
                    if (tabIndex === _nextCall) {
                        loadNext();
                    }
                }
            };
        })();

        var child1Class = (function (parentClass) {
            var newObj = parentClass;

            newObj._tabsPerCall = 6;
            newObj._nextCall = 6;
            newObj._tabsArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

            return newObj;
        })(parentClass);

        var child2Class = (function (parentClass) {
            var newObj = parentClass;

            newObj._tabsPerCall = 5;
            newObj._nextCall = 5;
            newObj._tabsArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];

            return newObj;
        })(parentClass);

但是,当我调用childClass.get()时,我收到一个错误,指出_tabsArray未定义。

两个孩子都需要为_tabsPerCall,_nextCall和_tabsArray维护不同的值。

之前,我试图这样做,但两个孩子共享同一个parentClass实例:

            var childClass= (function (tabBtnBuilder) {
            tabBtnBuilder._tabsPerCall = 6;
            tabBtnBuilder._nextCall = 6;
            tabBtnBuilder._tabsArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

            return tabBtnBuilder;
        })(tabBtnBuilder);

我没有正确覆盖parentClass吗?

我需要两个孩子从parentClass继承,但他们需要维护自己的parentClass变量实例。

0 个答案:

没有答案