Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.06.2014, 13:11
Интересующийся
Отправить личное сообщение для gh321 Посмотреть профиль Найти все сообщения от gh321
 
Регистрация: 14.02.2011
Сообщений: 23

Конструктор в js
Привет,
народ как правильно реализовать конструктор в котором не только инициализация переменных, но функции обрабатывают эти переменные.

function A(obx){
this.x= obx.x;
this.y. obx.y;

this.f1 = function (); //не то 
}

var a = new A(t);
//все методы внутри
//a.f1 - так  не подходит
Ответить с цитированием
  #2 (permalink)  
Старый 19.06.2014, 14:00
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Синтаксическая ошибка в 3 строчке: после у должно быть "=", а не ".". Ну и методы лучше в прототип выносить. В этом и смысл прототипного наследования: методы, константные свойства и свойства по-умолчанию - в прототип.
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2014, 00:34
Интересующийся
Отправить личное сообщение для gh321 Посмотреть профиль Найти все сообщения от gh321
 
Регистрация: 14.02.2011
Сообщений: 23

Синтаксическая ошибка в 3 строчке: после у должно быть "=", а не ".". ну это опечатка,
прототип ясно
Вопрос не этом, как в JS - 'классе' правильно сделать конструктор, в котором как то обрабатываются переменные
A(obx)
то есть в obx есть несколько своих полей и они обрабатываться именно в конструкторе
var a = new A(t);

то есть в 'a' - есть результат этой обработки
Такое можно реализовать?
Ответить с цитированием
  #4 (permalink)  
Старый 26.06.2014, 01:00
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

gh321, тут всё от целей зависит. Во-первых, почему свойства передаваемого аргумента именно в функции обрабатывать? Но это не важно: функция - так функция. Тут два варианта. Если логика приватного характера, то так:
function A(object) {
  this.x = process(object.x);

  function process(x) { /* ... */ }
}
А можно обрабатывающую функцию в прототип запихнуть. Тогда её можно будет перегрузить в производном классе:
function A(object) {
  this.x = this.process(object.x);
}

A.prototype.process = function () { /* ... */ };


function B() {
  A.apply(this, arguments);
}

B.prototype = Object.create(A.prototype);

B.prototype.process = function () { /* ... */ };
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
JS конструктор в обэкте domius Ваши сайты и скрипты 2 07.06.2014 22:53
Вывыод контента через JS inet_boy Элементы интерфейса 0 18.11.2013 03:00
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05