Развитие игровой вспышки
Текущее время: Вс фев 18, 2018 7:29 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 1423 ]  На страницу Пред.  1 ... 139, 140, 141, 142, 143
Автор Сообщение
 Заголовок сообщения: Re: HTML5 — Вопрос - ответ
СообщениеДобавлено: Пт дек 01, 2017 7:50 am 
Не в сети
Аватар пользователя

Зарегистрирован: Пт дек 11, 2009 9:33 pm
Сообщений: 337
Сайт: http://www.gameslocation.com/
Swer писал(а):
MajorMilizii писал(а):
вообще зачем здесь ob?

ob нужен для создания замыкания в функциях.
К примеру
Код:
var game = {};
game.initObjects = function(){
   game.a = {
      name:"Name A",
      getName:function(){ console.log( game.a.name); }
   }
   game.b = {
      name:"Name B",
      getName:function(){ console.log( game.b.name); }
   }
};
game.initObjects();
game.a.getName(); // output Name A
var n = game.a;
game.a = game.b;
n.getName();         // output Name B

Это не то что нужно , потому что в последней строке должно быть - output Name A .
Можно сделать так
Код:
var game = {};
game.initObjects = function(){
   game.a = game.CA("Name A");
   game.b = game.CA("Name B");
   game.c = game.CA("Name C");
};
game.CA = function( namee ){
   var ob = {
      name:namee,
      getName:function(){ console.log( ob.name); }
   }
   return ob;
};

game.initObjects();
game.a.getName(); // output Name A
var n = game.a;
game.a = game.b;
n.getName(); // output Name A

здесь всё как надо, но у меня в game.initObjects создаётся много разных объектов , а делать для каждого отдельную функцию я бы не хотел. Нужно это для того, чтобы я мог, к примеру, сделать так -
Код:
[game.b.getName][0](); // output Name B



твой пример проще всего

var game = {};
game.initObjects = function()
{
game.a = new game.CA("Name A");
game.b = new game.CA("Name B");
game.c = new game.CA("Name C");
};
game.CA = function( namee )
{
var name=namee;
this.getName=function(){console.log(name);}
};
game.initObjects();
game.a.getName();
game.b.getName();
game.c.getName();


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: HTML5 — Вопрос - ответ
СообщениеДобавлено: Пт дек 01, 2017 10:00 am 
Не в сети

Зарегистрирован: Пт май 03, 2013 11:38 am
Сообщений: 180
MajorMilizii писал(а):
твой пример проще всего

Незнаю может я неправильно объяснил :D
К примеру можно сделать так
Код:
var game = {};
game.initObjects = function(){
   game.a = game.createA();
   game.b = game.createB();
};
game.createA = function(){
   var b = {};
   b.name = "createA";
   b.getName = function(){console.log(b.name );}
   return b;
};
game.createB= function(){
   var b = {};
   b.name = "createB";
   b.getName = function(){console.log(b.name );}
   return b;
};
game.initObjects();
var n = game.a;
[n.getName][0](); // output createA
game.a = game.b;
[n.getName][0](); // output createA

Всё работает как надо - объект записывается в свои же функции,
Но нужно создавать дополнительные функции - createA, createB.
Я бы хотел сделать так
Код:
var game = {};
game.initObjects = function(){
   var b;
   b = game.a ={
        name:"createA",
        getName:function(){console.log(b.name );}
   };
   b = game.b ={
        name:"createB",
        getName:function(){console.log(b.name );}
   };
};
game.initObjects();
[game.a.getName][0](); // output createB - неправильно

так не получается,
и так не получится -
Код:
var game = {};
game.initObjects = function(){
   game.a ={
        name:"createA",
        getName:function(){console.log(game.a.name );}
   };
   game.b ={
        name:"createB",
        getName:function(){console.log(game.b.name );}
   };
};
game.initObjects();
var n = game.a;
[n.getName][0](); // output createA
game.a = game.b;
[n.getName][0](); // output createB - неправильно

Вот вопрос в том можно ли всё зпихнуть в одну функцию, не создавая дополнительных функций для создания объектов ?


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: HTML5 — Вопрос - ответ
СообщениеДобавлено: Пт дек 01, 2017 10:44 am 
Не в сети
Аватар пользователя

Зарегистрирован: Пт дек 11, 2009 9:33 pm
Сообщений: 337
Сайт: http://www.gameslocation.com/
Swer писал(а):
MajorMilizii писал(а):
твой пример проще всего

Незнаю может я неправильно объяснил :D
К примеру можно сделать так
Код:
var game = {};
game.initObjects = function(){
   game.a = game.createA();
   game.b = game.createB();
};
game.createA = function(){
   var b = {};
   b.name = "createA";
   b.getName = function(){console.log(b.name );}
   return b;
};
game.createB= function(){
   var b = {};
   b.name = "createB";
   b.getName = function(){console.log(b.name );}
   return b;
};
game.initObjects();
var n = game.a;
[n.getName][0](); // output createA
game.a = game.b;
[n.getName][0](); // output createA

Всё работает как надо - объект записывается в свои же функции,
Но нужно создавать дополнительные функции - createA, createB.
Я бы хотел сделать так
Код:
var game = {};
game.initObjects = function(){
   var b;
   b = game.a ={
        name:"createA",
        getName:function(){console.log(b.name );}
   };
   b = game.b ={
        name:"createB",
        getName:function(){console.log(b.name );}
   };
};
game.initObjects();
[game.a.getName][0](); // output createB - неправильно

так не получается,
и так не получится -
Код:
var game = {};
game.initObjects = function(){
   game.a ={
        name:"createA",
        getName:function(){console.log(game.a.name );}
   };
   game.b ={
        name:"createB",
        getName:function(){console.log(game.b.name );}
   };
};
game.initObjects();
var n = game.a;
[n.getName][0](); // output createA
game.a = game.b;
[n.getName][0](); // output createB - неправильно

Вот вопрос в том можно ли всё зпихнуть в одну функцию, не создавая дополнительных функций для создания объектов ?



у тебя все работает правильно, просто ты думаешь неправильно
Код:
var n = game.a;
[n.getName][0](); // output createA
n = game.b;
[n.getName][0](); // output createB


но на мой взгляд лучше, как я уже писал

Код:
var game = {};
game.initObjects = function()
{
game.a = new game.CA("Name A");
game.b = new game.CA("Name B");
game.c = new game.CA("Name C");
};
game.CA = function( namee )
{
var name=namee;
this.getName=function(){console.log(name);}
};
game.initObjects();
game.a.getName();
game.b.getName();
game.c.getName();


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 1423 ]  На страницу Пред.  1 ... 139, 140, 141, 142, 143

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB