Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2012, 15:42
Интересующийся
Отправить личное сообщение для artnik Посмотреть профиль Найти все сообщения от artnik
 
Регистрация: 19.01.2011
Сообщений: 28

var или function при ООП?
Подскажите, есть ли разница в использовании var и function при ООП.
К примеру мой js файл подключается в head-е документа.
Сейчас я начал писать код типо "var a = {b:function(){...}}". Но, возможно, правильнее писать так "function a() {this.b = function(){...}}"?
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2012, 16:30
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

у каждого из бесчисленного количества вариантов будет своё "правильнее".
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2012, 16:42
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

ну так это же разные вещи, в первом случае объект, во второй случае конструктор =)
ну т.е. в первом случае у вас есть только один объект со своими методами
a.b();

а во втором случае вы можете много таких объектов создать
var c = new a();
var d = new a();


очень рекомендую вам learn.javascript.ru, а потом статьи http://javascript.ru/doctree вот тут.

Последний раз редактировалось tadjik1, 14.03.2012 в 16:47.
Ответить с цитированием
  #4 (permalink)  
Старый 14.03.2012, 16:48
Интересующийся
Отправить личное сообщение для artnik Посмотреть профиль Найти все сообщения от artnik
 
Регистрация: 19.01.2011
Сообщений: 28

Спасибо, почитаю
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2019, 14:48
Новичок на форуме
Отправить личное сообщение для alexmix Посмотреть профиль Найти все сообщения от alexmix
 
Регистрация: 02.04.2019
Сообщений: 4

В разных исходниках видел, что можно писать вот так:

var obj = {
	init: function() {
	...
	foobar: function() {
	...
};

obj.init();


А можно так:

function func() {
	...
	...init...
	...
	this.foobar = function() {
	...
}

var obj = new func();


Вопросы:
1. В каких ситуациях что лучше / правильнее использовать (если можно, то какие-то простейшие примеры, но не абстрактные, а из реальной практики)?
2. Если вариант 2 можно использовать много раз, то не лучше ли (универсальнее) его использовать всегда?
Ответить с цитированием
  #6 (permalink)  
Старый 19.12.2019, 15:00
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Лучше, имхо, так:
class SomeClass {
    constructor() {}

    foobar() {}
}

var baz = new SomeClass();
baz.foobar();

В вашем случае в памяти будет храниться реализация методов для каждого экземпляра класса.
В моем в памяти будет храниться только реализация прототипа класса, экземпляры будут ссылаться на прототип.
Ответить с цитированием
  #7 (permalink)  
Старый 19.12.2019, 15:40
Новичок на форуме
Отправить личное сообщение для alexmix Посмотреть профиль Найти все сообщения от alexmix
 
Регистрация: 02.04.2019
Сообщений: 4

Правильно ли я вас понял - с точки зрения расхода памяти, если мы реализуем только одну какую-то сущность, то не имеет значения, какой вариант выбрать. Если сущностей будет несколько, то лучше делать ваш вариант? Так?
Ответить с цитированием
  #8 (permalink)  
Старый 20.12.2019, 14:09
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от alexmix
Правильно ли я вас понял - с точки зрения расхода памяти, если мы реализуем только одну какую-то сущность, то не имеет значения, какой вариант выбрать. Если сущностей будет несколько, то лучше делать ваш вариант? Так?
да.

если хочешь "по старинке" сделать, то функции можно в прототип запихнуть, будет практически копия варианта с классом

function func() {
	...
	...init...
	...
}

func.prototype.foobar = function() {...}

var obj = new func();
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите отредактировать код javascript-a dizzid Общие вопросы Javascript 18 06.02.2012 23:59
Расшифровка кода, генерируемого flash. ГостьФорума Общие вопросы Javascript 6 02.02.2011 01:26
CComponent - кроссбраузерные компоненты tenshi Ваши сайты и скрипты 5 20.04.2010 23:22
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20
вопрос по jSon + Ajax Beck Events/DOM/Window 47 07.10.2009 15:52