Произошла ошибка.
Пожалуйста, обновите страницу.
Fly.js > Документация > Функции > $.inherit()

$.inherit()

Возвращает функцию-конструктор (класс) для создания экземпляров.

#Функции

$.inherit(methods, [statics])
$.inherit(base, methods, [statics])
$.inherit(mixins, methods, [statics])

                    FlyDomNode: {
                        __constructor: function(context) {
                            var array = fnNodeList.makeDomNodeArray(context);
                            for (var a = 0, al = array.length; a < al; a++) {
                                this[a] = array[a];
                            }
                            this.length = al;
                        },

                        size: function() {
                            return this.length;
                        },

                        get: function(index) {
                            return $.isNumber(index) ? this[index] : [].slice.call(this);
                        },

                        addNode: function(flyNode) {
                            return fnNodeList.changeNodeContext(this, flyNode, function(child, context) {
                                context.indexOf(child) === -1 && context.push(child);
                            });
                        },

                        removeNode: function(flyNode) {
                            return fnNodeList.changeNodeContext(this, flyNode, function(child, context) {
                                var position = context.indexOf(child);
                                if (position !== -1) context.splice(position, 1);
                            });
                        },

                        eq: function(index) {
                            if (index < 0) index = index + this.length;
                            return new this.__self(this[index]);
                        },

                        lt: function(index) {
                            return new this.__self(this.slice(0, index));
                        },

                        gt: function(index) {
                            return new this.__self(this.slice(index));
                        },

                        last: function(selector) {
                            var element = this[this.length - 1];
                            return new this.__self(fnStyle.isMatch(element, selector) ? element : []);
                        },

                        first: function(selector) {
                            var element = this[0];
                            return new this.__self(fnStyle.isMatch(element, selector) ? element : []);
                        },

                        normalize: function() {
                            return fnNodeList.transformNodeContext(this, function(item, context) {
                                if ($.isNode(item)) context.push(item);
                            });
                        },

                        each: function(callback, context) {
                            $.each(this, callback, context);
                            return this;
                        },

                        name: function() {
                            return this[0].tagName.toLowerCase() || null;
                        }
                    }
                

Внутри методов экземпляра можно использовать ключевое свойство __self, чтобы обратиться к собственному классу.

Внутри любых методов можно использовать ключевое слово __base, чтобы обратиться к одноимённому методу родительского (базового) класса.

При создании экземпляра будет вызван метод __constructor (если определён).

$.inherit(methods, [statics])
Возвращает: Function ()

Возвращает функцию-конструктор для создания экземпляров класса.

methods: Object {}

Объект, содержащий методы будущих экземпляров класса.

statics: Object {}

Объект, содержащий статические методы класса.

Статические методы можно не указывать.

Пример: Простейший пример использования $.inherit.

<!DOCTYPE html>
    <head>
        <meta charset="utf-8"/>
        <title>Fly.js - $.inherit()</title>

        <script src="/scripts/fly.js"></script>
    </head>
    <body>
        <p id="p1"></p>
        <p id="p2"></p>

        <script>
            var A = $.inherit({
                    appendText: function(text) {
                        this.__self.paragraph.append(text);
                        return this;
                    }
                }, {
                    paragraph: $('#p1')
                }),
                a = new A();
                
                a.appendText('hello world!');
                $('#p2').html(a instanceof A);
        </script>
    </body>
</html>

$.inherit(base, methods, [statics])
Возвращает: Function ()

Возвращает класс для создания экземпляров, наследующий от base.

base: Function ()

Родительский (базовый) класс, от которого будет произведено наследование.

methods: Object {}

Объект, содержащий методы будущих экземпляров класса.

statics: Object {}

Объект, содержащий статические методы класса.

Если base не указан, то получится предыдущий случай использования функции (смотрите выше).

Пример: Наследование классов с помощью $.inherit.

<!DOCTYPE html>
    <head>
        <meta charset="utf-8"/>
        <title>Fly.js - $.inherit()</title>

        <script src="/scripts/fly.js"></script>
    </head>
    <body>
        <p id="p1"></p>
        <p id="p2"></p>
        <p id="p3"></p>

        <script>
            var A = $.inherit({
                    appendText: function(text) {
                        this.__self.paragraph.append(text);
                        return this;
                    },

                    stylizeText: function(color) {
                        this.__self.paragraph.css('color', color);
                    }
                }, {
                    paragraph: $('#p1')
                }),
                B = $.inherit(A, {
                    appendText: function() {
                        this.__base.apply(this, arguments);
                        return this.__base.call(this, ' from B ');
                    }
                }, {
                    paragraph: $('#p2')
                }),
                a = new A(),
                b = new B();

                a.appendText('abcdefg');
                b.appendText('hello')
                 .appendText('world')
                 .stylizeText('#f00');

                $('#p3').html((b instanceof A) + ' ' + (b instanceof B));
        </script>
    </body>
</html>

$.inherit(mixins, methods, [statics])
Возвращает: Function ()

Возвращает класс для создания экземпляров, наследующий от базового класса с примесями.

mixins: Array []

Массив из базового класса на первой позиции и примесей.

methods: Object {}

Объект, содержащий методы будущих экземпляров класса.

statics: Object {}

Объект, содержащий статические методы класса.

Массив mixins должен содержать на первом месте базовый класс и выглядеть следующим образом: [base, mixin1, mxin2, ...].

Обратите внимание, что экземпляры будут принадлежать к классу base, но не будут принадлежать к классам примесей mxin1, mxin2, ...

Пример: Использование примесей при наследовании классов.

<!DOCTYPE html>
    <head>
        <meta charset="utf-8"/>
        <title>Fly.js - $.inherit()</title>

        <script src="/scripts/fly.js"></script>
    </head>
    <body>
        <p id="p1"></p>
        <p id="p2"></p>

        <script>
            var Base = Array,
                Mixin = $.inherit({
                    remove: function(n) {
                        this.splice(n, 1);
                        return this;
                    }
                }),
                B = $.inherit([Base, Mixin], {
                    __constructor: function() {
                        for (var a = 0, al = arguments.length; a < al; a++) {
                            this.push(arguments[a]);
                        }
                    }
                }),
                b = new B(1, 2, 3, 4, 5);

                b.remove(2);
                
                $('#p1').html(b.join(', '));
                $('#p2').html((b instanceof Mixin) + ' ' + (b instanceof Base));
        </script>
    </body>
</html>