Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2011, 12:29
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Конструкторы в Javascript, OOP
Подскажите, пожалуйста, можно ли объявить объект с конструктором, не через функцию.
если я объявляю объект через литерал:
var myObj = {
  windowScrollPosition: 0,
  showHeader : false,
  recalculate : function(){
     // function recalculating coords
  }
}

И я хочу передать функции объект, относительно которого хочу считать координаты.. что-то типа:
var coordObj = new myObj(objForCalc);


Я могу как-то объявить конструктор? или нужно делать только через функцию, а не литерал?!
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2011, 12:31
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вы написали что-то странное.
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2011, 13:18
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

function myObj(...) {
...
}
myObj.свойство = значение; // и т. д.


Вы это имели ввиду?
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2011, 13:18
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

В смысле странное? Я хочу узнать, может ли быть конструктор у объекта, описанного литералом? или я должен там создать функцию init() и ее запускать, чтоб передавать параметры?
В php есть метод __construct(), который вызывается при создании объекта, есть ли в js такое?
Matre,
а разве так можно делать? Ну в принципе примерно это, только чтоб это делалось при создании объекта...

Последний раз редактировалось InviS, 16.03.2011 в 13:23.
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2011, 13:26
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от InviS
В php есть метод __construct(), который вызывается при создании объекта, есть ли в js такое?
Так у вас объект уже создан, что должен делать мифический конструктор?
Ответить с цитированием
  #6 (permalink)  
Старый 16.03.2011, 13:31
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Цитата:
Ну в принципе примерно это, только чтоб это делалось при создании объекта...
Это, увы, никак.
Можно написать функцию, которая будет перегонять свойства из созданного объекта (не порождённого myObj(), а другого объекта) в свойства myObj. Примерно так:

function extend(from, to) {...}
extend({
ключ : значение
}, myObj);
Ответить с цитированием
  #7 (permalink)  
Старый 16.03.2011, 21:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от InviS
Я могу как-то объявить конструктор? или нужно делать только через функцию, а не литерал?!
не уверен, но возможно вы имеи в виду что-то типа:

<p id="element">text</p>

<script type="text/javascript">
function Foo(i) {
    this.i = i;
};

Foo.prototype = {
    get : function() {
        return document.getElementById(this.i);
    },
    set : function() {
        this.get().style.color = 'red';
     }
}

var bar = new Foo('element');
bar.set();
</script>

Последний раз редактировалось monolithed, 16.03.2011 в 21:37.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43