Плохо! Плохо!:  0
Показано с 1 по 4 из 4

Тема: Как перевести скрипты в плагины

  1. #1

    По умолчанию Как перевести скрипты в плагины

    Всем привет.

    В этой теме я буду выкладывать некие "шаблоны", с помощью которых можно перевести скрипты в плагины. Или хотя бы научиться читать код.

    Определение класса
    Спойлер спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName
    end

    JS
    Спойлер Спойлер:
    Код:
    function ClassName() {
       this.initialize.apply(this, arguments); // эта строчка нужна, если initialize отдельной функцией
    }



    Определение класса с наследованием
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName < ClassName1
    end

    JS
    Спойлер Спойлер:
    Код:
    function ClassName() {
       this.initialize.apply(this, arguments); // эта строчка нужна, если initialize отдельной функцией
    }
    ClassName.prototype = Object.create(ClassName1.prototype);



    Определение класса с наследованием + использование конструктора нового класса
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName1
       def initialize
          # какой-то код здесь
       end
    end
     
    class ClassName < ClassName1
       def initialize
          # новый код здесь
       end
    end

    JS
    Спойлер Спойлер:
    Код:
    function ClassName() {
       this.initialize.apply(this, arguments); // здесь initialize отдельной функцией ниже
    }
    
    ClassName.prototype = Object.create(ClassName1.prototype);
    ClassName.prototype.constructor = ClassName;
    
    ClassName.prototype.initialize = function() {
    };

    Последний раз редактировалось DK; 10.07.2016 в 15:48. Причина: Ошибка

  2. #2

    По умолчанию

    Вызов функции из родительского класса
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName
       def initialize
          super # именно эта функция
       end
    end


    JS
    Спойлер Спойлер:
    Код:
    function ClassName() {
       this.initialize.apply(this, arguments);
    }
     
    ClassName.prototype = Object.create(ClassName1.prototype);
    ClassName.prototype.constructor = ClassName;
     
    ClassName.prototype.initialize = function() {
       ClassName1.prototype.initialize.call(this); // именно эта функция
    };



    Тоже самое, но с параметрами
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName
       def initialize(x, y)
          super(x, y) # именно эта функция
       end
    end


    JS
    Спойлер Спойлер:
    Код:
    function ClassName() {
       this.initialize.apply(this, arguments);
    }
     
    ClassName.prototype = Object.create(ClassName1.prototype);
    ClassName.prototype.constructor = ClassName;
     
    ClassName.prototype.initialize = function(x, y) {
       ClassName1.prototype.initialize.call(this, x, y); // именно эта функция
    };



    Переменная класса
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName
       def initialize(x, y)
          self.x = x # используем self и . (точку), self - указатель на данный экземпляр (используется внутри класса)
          @x = x # переменная экземпляра класса
          @@x = x # переменная всех экземпляров класса
       end
    end


    JS
    Спойлер Спойлер:
    Код:
    function ClassName() {
       this.initialize.apply(this, arguments);
    }
     
    ClassName.prototype.initialize = function(x, y) {
       this.x = x; // используем this и . (точку), this - указатель на данный экземпляр (используется внутри класса), также используется, как переменная экземпляра класса
       ClassName.variable = x; // переменная всех экземпляров класса
    };



    Alias функций (дополнение функций)
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName
       def initialize(x, y)
          x = x
       end
    end
    
    class ClassName
       alias new_initialize initialize # ключевое слово alias, затем новое название метода, затем название метода, который дополняем
       def initialize(x, y)
          new_initialize(x, y)
          # и здесь ваш код
       end
    end


    JS
    Спойлер Спойлер:
    Код:
    function ClassName() {
       this.initialize.apply(this, arguments);
    }
     
    ClassName.prototype.initialize = function(x, y) {
       this.x = x;
    };
    
    var new_initialize = ClassName.prototype.initialize; // сохраняем старую функцию
    ClassName.prototype.initialize = function(x, y) {
       // вызываем сохраненную функцию
       new_initialize.call(this, x, y);
       // и здесь ваш код
    };

    Последний раз редактировалось DK; 10.07.2016 в 15:46. Причина: Ошибка

  3. #3

    По умолчанию

    Исправил ошибки в первых двух постах

  4. #4

    По умолчанию

    Вызов функции из класса + параметры по умолчанию
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    class ClassName
       def initialize
          x = 5
          y = 1
          some_function # без параметров
          some_function() # без параметров
          some_function(x, y) # с параметрами
       end
    
       def some_function(x = 5, y = 2) # параметры по умолчанию
       end
    end


    JS
    Спойлер Спойлер:
    Код:
    ClassName.prototype.initialize = function() {
       var x = 5;
       var y = 1;
       //this.someFunciton; - это уже объект
       this.someFunction(); // без параметров
       this.someFunction(x, y); // с параметрами
    };
    
    ClassName.prototype.someFunciton = function(x, y) {
       x = (x == null ? 5 : x); // значение по умолчанию (поддерживает 0)
       y = (y == null ? 2 : y); // значение по умолчанию (поддерживает 0)
       if (x === undefined) x = 5; // можно еще так
       if (x == null) x = 5; // можно так, если требуется проверить, что в переменной null или undefined
       // x = x || 5; не поддерживает 0
    };



    times
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    def some_funciton(value)
       value.times do
          # код здесь
       end
    end


    JS
    Спойлер Спойлер:
    Код:
    function someFunction(value) {
       for(var i = 0; i < value; i++)
       {
          // код здесь
       }
    }



    Отсутствие объекта (nil в ruby, null в js)
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    def some_function(object)
       return object.nil?
    end


    JS
    Спойлер Спойлер:
    Код:
    function someFunction(object) {
       return object === null;
    }



    Вернуть значение из функции
    Спойлер Спойлер:

    Ruby
    Спойлер Спойлер:
    Код:
    def some_function(object)
       5 # можно возвращать последнее вычисленное значение или значение на последней строчке функции
    end


    JS
    Спойлер Спойлер:
    Код:
    function someFunction() {
       return 5; // обязательно использовать return
    }


Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Как перевести скрипты в плагины