Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Конструктор в js (https://javascript.ru/forum/misc/48091-konstruktor-v-js.html)

gh321 19.06.2014 13:11

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

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

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

var a = new A(t);
//все методы внутри
//a.f1 - так  не подходит

Sweet 19.06.2014 14:00

Синтаксическая ошибка в 3 строчке: после у должно быть "=", а не ".". Ну и методы лучше в прототип выносить. В этом и смысл прототипного наследования: методы, константные свойства и свойства по-умолчанию - в прототип.

gh321 26.06.2014 00:34

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

то есть в 'a' - есть результат этой обработки
Такое можно реализовать?

Sweet 26.06.2014 01:00

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 () { /* ... */ };


Часовой пояс GMT +3, время: 22:50.