Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.01.2016, 14:02
Интересующийся
Отправить личное сообщение для am_sasa Посмотреть профиль Найти все сообщения от am_sasa
 
Регистрация: 14.07.2014
Сообщений: 20

Какая разница в объектах?
function F(id,a,b){
	this.getID=function(){return id}
	this.getSum=function(){return a+b}
}
или
function F(id,a,b){
	this.id=id;
	this.a =a;
	this.b = b;
	
	this.getID=function(){return this.id}
	this.getSum=function(){return this.a+this.b}
}

Объект упрощенный, и таких объектов много.
Меня терзают смутные сомнения, что надо использовать второй вариант.
Посоветуйте как правильней...
Ответить с цитированием
  #2 (permalink)  
Старый 12.01.2016, 14:43
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Нужно использовать третий вариант:
сначала прочитать, как там всё устроено http://learn.javascript.ru/prototypes
а потом использовать babel или typescript с нормальными классами
Ответить с цитированием
  #3 (permalink)  
Старый 12.01.2016, 17:26
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

am_sasa, во втором варианте мы можем всегда перезаписать свойства из вне:

var f = new F(null, 1, 1);

f.a = 2;
f.b = 3;

alert( f.getSum() ); //5
Ответить с цитированием
  #4 (permalink)  
Старый 12.01.2016, 17:54
Интересующийся
Отправить личное сообщение для am_sasa Посмотреть профиль Найти все сообщения от am_sasa
 
Регистрация: 14.07.2014
Сообщений: 20

Спасибо, изучу. Правда там про ООП (прототип), которого у меня нет, но все равно спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 12.01.2016, 17:58
Интересующийся
Отправить личное сообщение для am_sasa Посмотреть профиль Найти все сообщения от am_sasa
 
Регистрация: 14.07.2014
Сообщений: 20

я имел ввиду, что при замыкании будут создаваться новые функции на каждый объект, а не использоваться существующие (имхо). Если не прав, то замыкания тоже хорошо.
Ответить с цитированием
  #6 (permalink)  
Старый 12.01.2016, 19:12
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

am_sasa, у вас в обеих вариантах каждый раз создаются новые функции.

Используйте прототипы:

function F(id, a, b) {
    this.id = id;
    this.a = a;
    this.b = b;
};
F.prototype = {
    getID: function() {
        return this.id;
    },
    getSum: function() {
        return this.a + this.b;
    }
};
Ответить с цитированием
  #7 (permalink)  
Старый 13.01.2016, 09:23
Интересующийся
Отправить личное сообщение для am_sasa Посмотреть профиль Найти все сообщения от am_sasa
 
Регистрация: 14.07.2014
Сообщений: 20

Ruslan_xDD, вот за это спасибо, теперь понял, так и сделаю.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какая разница между модулями DOM Level 2 и интерфейсами Node? dump Общие вопросы Javascript 3 09.08.2012 17:22
Какая разница между post запросами jquery и ajax? Rooner jQuery 2 18.06.2012 14:29
Какая разница между определениями функций Nadine Общие вопросы Javascript 1 07.03.2012 16:07
кириллица/латиница: какая разница? i-arm AJAX и COMET 3 09.08.2011 06:47
Какая разница в коде? DimonCry Общие вопросы Javascript 4 07.01.2011 01:04