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

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад - 9 года 9 мес. назад #93026 от DK
Всем привет.

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

Определение класса
ВНИМАНИЕ: Спойлер!


Определение класса с наследованием
ВНИМАНИЕ: Спойлер!


Определение класса с наследованием + использование конструктора нового класса
ВНИМАНИЕ: Спойлер!
Последнее редактирование: 9 года 9 мес. назад пользователем DK. Причина: Ошибка
Спасибо сказали: strelokhalfer, Демий, poca, Jas6666

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад - 9 года 9 мес. назад #93028 от DK
Вызов функции из родительского класса
ВНИМАНИЕ: Спойлер!


Тоже самое, но с параметрами
ВНИМАНИЕ: Спойлер!


Переменная класса
ВНИМАНИЕ: Спойлер!


Alias функций (дополнение функций)
ВНИМАНИЕ: Спойлер!
Последнее редактирование: 9 года 9 мес. назад пользователем DK. Причина: Ошибка
Спасибо сказали: strelokhalfer, Демий, poca, Jas6666

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Коммерсант Проект года 1 место Учитель Проект месяца 1 место
Больше
9 года 9 мес. назад #93031 от Iren_Rin
Этот код не будет работать, call вызывается у объекта функции, а у не протатипа.
Code:
ClassName1.prototype.call(this); // именно эта функция

Этот код не имеет смысла, т.к. в любом рубе классе есть пустой конструктор.
Code:
class ClassName < ClassName1 def initialize end end #Это тоже самое что и class ClassName < ClassName1 end
Спасибо сказали: strelokhalfer

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад - 9 года 9 мес. назад #93032 от DK

Iren_Rin пишет: Этот код не будет работать, call вызывается у объекта функции, а у не протатипа.

Code:
ClassName1.prototype.call(this); // именно эта функция

Этот код не имеет смысла, т.к. в любом рубе классе есть пустой конструктор.
Code:
class ClassName < ClassName1 def initialize end end #Это тоже самое что и class ClassName < ClassName1 end


Спасибо. В первом случае забыл дописать функцию. [strike]А во втором просто указал, что пишем различные функции[/strike]. Сейчас исправлю оригинал

UPD. Если не написать пустой initialize, то будет использоваться метод из родительского класса. А этот код относится к разделу "использование конструктора нового класса"
Последнее редактирование: 9 года 9 мес. назад пользователем DK.
Спасибо сказали: poca

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Коммерсант Проект года 1 место Учитель Проект месяца 1 место
Больше
9 года 9 мес. назад #93034 от Iren_Rin
Тогда добавь код родительского класса, чтобы было видно что у него непустой конструктор, все тогда станет ясно. Алиасы лучше показывать не на конструкторах, т.к. конструкторы это необычные методы \ функции. Конечно на них все это будет работать, но все же.
Спасибо сказали: DK, strelokhalfer

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад #93035 от DK
Исправил ошибки, подробнее расписал про переменные, алиасы оставил
Спасибо сказали: poca

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад - 9 года 9 мес. назад #93115 от DK
Вызов функции из класса + параметры по умолчанию
ВНИМАНИЕ: Спойлер!


times
ВНИМАНИЕ: Спойлер!


Отсутствие объекта (nil в ruby, null в js)
ВНИМАНИЕ: Спойлер!


Вернуть значение из функции
ВНИМАНИЕ: Спойлер!
Последнее редактирование: 9 года 9 мес. назад пользователем DK.
Спасибо сказали: strelokhalfer, Демий, poca

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
9 года 9 мес. назад #93116 от strelokhalfer
1. У тебя метод объекта, метод класса есть с self.
2. Укажи что times есть только у чисел, а то кто нибудь вдруг пойдёт строку так перебирать)
3. Вроде верно)

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад #93118 от DK

strelokhalfer пишет: 1. У тебя метод объекта, метод класса есть с self.
2. Укажи что times есть только у чисел, а то кто нибудь вдруг пойдёт строку так перебирать)
3. Вроде верно)


Поясни на счет первого, не очень понял. Завтра второй пункт поправлю или ты поправь. Тыжмодератор)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
9 года 9 мес. назад - 9 года 9 мес. назад #93120 от strelokhalfer
Метод класса можно дернуть без объекта, аля File.Open(def self.open), а метод объекта соответственно
window = window_base.new
window.setskin("System\window.png) #def setskin
Пс. Прав нет)
4. Да, в руби можно не указывать ретурн, но это плохой вкус)

"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 9 года 9 мес. назад пользователем strelokhalfer.
Спасибо сказали: DK

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
9 года 9 мес. назад #93122 от EvilCat
Что такое "отсутствие объекта"? Когда оно используется (в Яваскрипте)?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад #93123 от DK

EvilCat пишет: Что такое "отсутствие объекта"? Когда оно используется (в Яваскрипте)?


Нулевое, пустое значение объекта

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
9 года 9 мес. назад #93124 от strelokhalfer
Кстати, лучше не использовать в примерах initiliase

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад #93125 от DK

strelokhalfer пишет: Кстати, лучше не использовать в примерах initiliase

Почему?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
9 года 9 мес. назад #93126 от strelokhalfer
Ну, метод конструктор, лучше брать абстрактные Foo Bar

"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Спасибо сказали: DK

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад #93127 от DK

strelokhalfer пишет: Ну, метод конструктор, лучше брать абстрактные Foo Bar


Ну ладно, буду использовать их. Хотя с конструкторами тоже надо работать
Спасибо сказали: strelokhalfer

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
9 года 9 мес. назад - 9 года 9 мес. назад #93128 от EvilCat

DK пишет: Нулевое, пустое значение объекта


Не понятно в разрезе Яваскрипта...

В C# и VB, языках со строгой типизацией, у переменных, объявленных как "объект", может быть значение "отсутствие объекта" (null и Nothing соответственно).

В Руби всё является объектом, соответственно, у любого имени можно спросить: nil? Но по правде говоря, я не знаю, когда это применяется, не настолько много работала с Руби.

Но с Яваскриптом я работала много... Там отсутствие объекта (например, ты искал в неё элемент веб-страницы, а он не нашёлся, вернулось false или null) определяется просто по условию самого объекта:
Code:
var canvas = document.GetElementById("canvas"); if (!canvas) throw new Error("canvas не найден!")

В Яваскрипте любой объект считается за истинное условие (следует заметить, что не любое значение считается объектом, в отличие от Руби!), а undefined, null, 0 и ряд других значений - ложными. Соответственно, если ожидаешь объект, то существование объекта проверяют просто условием - это надёжно.

Вообще в Яваскрипте редко различают undefined и null, почти что только в опциональных аргументах. Но если аргумент в любом случае не может принять ложных значений, допустимых в функции, то пишут просто: arg = arg || значение_по_умолчанию.
Последнее редактирование: 9 года 9 мес. назад пользователем EvilCat.
Спасибо сказали: DK, strelokhalfer, yuryol

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад #93129 от DK
Я написал сравнение === null именно потому что в объекте может лежать undefined или 0. Я понимаю, что если ты точно ждешь какого - то объекта, то можно просто поставить условие не объект, но, например, в моих плагинах частенько в функциях есть параметры по умолчанию, которые могут быть объектами, числами или строками. Соответственно object = object || 1 не будет работать для 0, а только для строки и объекта. Также в руби я часто использовал nil? чтобы убедиться, что в объекте не пустое значение и можно дальше работать

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
9 года 9 мес. назад #93130 от EvilCat
Поэтому-то и не понятно, что такое "отсутствие объекта"... undefined, 99 или строка "мяу" - тоже отсутствие объекта.
Спасибо сказали: Cerberus

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 9 мес. назад #93131 от DK

EvilCat пишет: Поэтому-то и не понятно, что такое "отсутствие объекта"... undefined, 99 или строка "мяу" - тоже отсутствие объекта.

Постараюсь получше описать
Спасибо сказали: poca

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.139 секунд
Работает на Kunena форум