Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 26.08.2011, 02:33
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Абсолютно не понятно, зачем нужны эти строчки:
this.$firstButton = new Object(); 
this.$secondButton = new Object();
???
Ответить с цитированием
  #22 (permalink)  
Старый 26.08.2011, 09:51
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

Сообщение от Sweet Посмотреть сообщение
Абсолютно не понятно, зачем нужны эти строчки:
this.$firstButton = new Object(); 
this.$secondButton = new Object();
???
Будет работать и без них, но это правило хорошего тона - обявить все свойства объекта в конструкторе перед их использованием, к томуже IDE увидит что убъекта имеются эти свойства и будет выдавать их в выпадающеи списке свойств и методов. Если уж идет сопоставление кода с delphi то там ведь перед использованием какой-либо переменной сначала объявляем ее.
Ответить с цитированием
  #23 (permalink)  
Старый 26.08.2011, 22:16
Интересующийся
Отправить личное сообщение для yambbkru Посмотреть профиль Найти все сообщения от yambbkru
 
Регистрация: 22.08.2011
Сообщений: 28

Спасибо, kadabrik! Так стало понятней. А можно еще попутный вопрос? Я прочла уже несколько раз в учебнике и на этом сайте о наследовании в javascript. Но остались не понятые моменты. Допустим есть класс
function Obj1(c) {
this.a = c;
this.b = function() {alert(this.a);}
this.b();
}

При запуске
var myObj1 = new Obj1("1");

показывает сообщение 1. Теперь я хочу создать новый класс
function Obj2(c) {
this.d = c + [B]this.a[/B];
[B]this.b();[/B]
}

где this.a и this.b() - это свойство и метод объекта Obj1. Как мне связать эти эти объекты? Так?
Obj2.prototype = new Obj1("1")

Но тогда попутно создается и объект Obj1. Я читала про обходные пути, что мол создается объект, а функция-конструктор пустая или копируют свойства из первого объекта во второй...
А можно так связать объекты, что бы не создавать первый объект, а только взять его методы? Не скопировать, а как то сослаться не создавая его? Тем более строчка с прототипом должна быть написана вне обеих функций, я так поняла. Но было бы гораздо удобнее связать функции в теле второй функции Obj2. Так можно сделать? И еще вопрос. Что значит строчка
О1 = Obj1

? Как в этом случае ведут себя оба класса? Если в правый добавить свойства что будет? А если в левый? И что сделалось с прототипом?
Ответить с цитированием
  #24 (permalink)  
Старый 26.08.2011, 23:50
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

yambbkru, если речь идет о наследовании, то в js есть несколько способов его реализовать. Лично мне больше всего нравится этот метод. Для наследования именно свойств, а не методов лучше подходит вызов конструктора родителя в конструкторе потомка: MyClass.superclass.constructor.call(this). После этого все переменные объявленные в конструкторе родителя будут и у потомка.
Ответить с цитированием
  #25 (permalink)  
Старый 27.08.2011, 00:02
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от yambbkru Посмотреть сообщение
есть класс
function Obj1(c) {
this.a = c;
this.b = function() {alert(this.a);}
this.b();
}

При запуске
var myObj1 = new Obj1("1");

я хочу создать новый класс
function Obj2(c) {
this.d = c + this.a;
this.b();
}

где this.a и this.b() - это свойство и метод объекта Obj1.

А можно так связать объекты, что бы не создавать первый объект, а только взять его методы?

Не скопировать, а как то сослаться не создавая его?
см. красную строку
function Obj1(c) {
    this.a = c;
    this.b = function() {
        alert(this.a);
    }
    this.b();
}
var myObj1 = new Obj1("1");

function Obj2(c) {
    debugger
    this.d = c + this.a;
    this.b();
}

*!*
Obj2.prototype = myObj1;
*/!*

// создадим экземпляр второго объекта, чтобы проверить работоспособность
new Obj2('c');


выдает два алерта, в которых 1.

Сообщение от yambbkru Посмотреть сообщение
О1 = Obj1

? Как в этом случае ведут себя оба класса? Если в правый добавить свойства что будет? А если в левый? И что сделалось с прототипом?
тут непонятно
Ответить с цитированием
  #26 (permalink)  
Старый 27.08.2011, 00:32
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

melky, как же всетаки текст на аватарке контрастирует с началом предыдущего сообщения
Ответить с цитированием
  #27 (permalink)  
Старый 30.08.2011, 18:00
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

Я увидел здесь разговор о var..Скажите пожайлуста, существет ли АНИМИРОВАНЫЙ АЛЕРТ и АНИМИРОВАНЫЙ var наподобие счетчика ? .Алерт выводит только стационарное значение var.
Причина вопроса такая_ меняется ширина картинки,ее анимированная ширина динамически передается другому объекту для его css.Как быть?
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту

Последний раз редактировалось Андрей38, 30.08.2011 в 18:07.
Ответить с цитированием
  #28 (permalink)  
Старый 30.08.2011, 18:07
Аватар для systemiv
Профессор
Отправить личное сообщение для systemiv Посмотреть профиль Найти все сообщения от systemiv
 
Регистрация: 19.08.2011
Сообщений: 186

Сообщение от Андрей38
что-то такое наподобие счетчика,существует?
Да, замыкания
Ответить с цитированием
  #29 (permalink)  
Старый 30.08.2011, 18:08
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

Сообщение от systemiv Посмотреть сообщение
Да, замыкания
Спасибо!Буду юзать!
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту
Ответить с цитированием
  #30 (permalink)  
Старый 04.09.2011, 23:32
Интересующийся
Отправить личное сообщение для yambbkru Посмотреть профиль Найти все сообщения от yambbkru
 
Регистрация: 22.08.2011
Сообщений: 28

А можно еще спросить? Вот есть такие 2 функции:
function a() {
  var t = {
    c : "1"
  }
  return t
}

function b() {
  var t = {
    d : "2"
  }
  return t
}

var A = a();
var B = b();
alert(A.c + B.d)

В результате выдает сообщение "12". Как мне сделать, что бы все объекты, создаваемые функцией b() имели своим прототипом объект, создаваемый функцией а()?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с созданием обменного пункта dikabraz Работа 2 23.04.2011 22:17
Помогите чайнику определить местоположение объекта maydep Общие вопросы Javascript 4 02.11.2010 09:17
Пожалуйста, помогите с созданием скрипта! Елизавета Общие вопросы Javascript 10 08.06.2010 13:20
Помогите!!! Из нового окна вызвать функцию ignavr Элементы интерфейса 5 13.12.2009 13:04
помогите с положением свободно позиционируемого объекта Newgen Элементы интерфейса 16 28.07.2009 09:41