Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / В чем разница / 10 сообщений из 10, страница 1 из 1
05.01.2013, 20:17
    #38100714
ланцепуп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function test()
{
  return {a:1, b:'abc'};
}

var x = new test();
var y = test();

console.dir(x);//{a:1, b:'abc'}
console.dir(y);//{a:1, b:'abc'}

console.info(typeof x);//object
console.info(typeof y);//object
console.info(x == y);//false

в чем принципиальная разница между x и y
...
Рейтинг: 0 / 0
05.01.2013, 21:38
    #38100744
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
Забавный пример. Какой смысл в вашей test()?


Вот "конструктор":

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function Test()
{
  this.a = 1;
  this.b = 'abc';
}

var x = {a: 1, b: 'abc'};

var y1 = new Test();
var y2 = Test();

console.dir(x);
console.dir(y1);
console.dir(y2);

console.info(typeof x);
console.info(typeof y1);
console.info(typeof y2);
...
Рейтинг: 0 / 0
05.01.2013, 22:04
    #38100757
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
...
Рейтинг: 0 / 0
06.01.2013, 03:41
    #38100832
Малыхин Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
авторв чем принципиальная разница между x и y В том что это разные объекты
Если я правильно понял то автора интересует почему x не равен y хотя поля у них одинаковы
...
Рейтинг: 0 / 0
06.01.2013, 06:09
    #38100843
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
ланцепупв чем принципиальная разница между x и yэто ссылки на два различных объекта, потому они не равны друг другу.

по поводу разницы между new test(); и test(); - в данном случае оба варианта возвращают {a:1, b:'abc'};
данная фича описана здесь . Суть в том, что если функция возвращает объект, то она не будет работать как стандартный конструктор (т.е. операция new как бы не при делах).

а вот если сделать так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
var test = (function() {
	var obj = {a:1, b:'abc'};
	return function() {
		return obj;
	};
})();

var x = new test();
var y = test();


то x и y будут ссылаться физически на один и тот же объект, т.е. (x == y) будет true.
так можно реализовать паттерн синглтон в js (new не будет создавать новые объекты).
...
Рейтинг: 0 / 0
06.01.2013, 10:37
    #38100869
ланцепуп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
Edd.DragonЗабавный пример. Какой смысл в вашей test()?


Вот "конструктор":

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function Test()
{
  this.a = 1;
  this.b = 'abc';
}

var x = {a: 1, b: 'abc'};

var y1 = new Test();
var y2 = Test();

console.dir(x);
console.dir(y1);
console.dir(y2);

console.info(typeof x);
console.info(typeof y1);
console.info(typeof y2);

какой смысл в вашем "конструкторе"?
...
Рейтинг: 0 / 0
06.01.2013, 10:42
    #38100870
ланцепуп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
Малыхин Сергейавторв чем принципиальная разница между x и y В том что это разные объекты
Если я правильно понял то автора интересует почему x не равен y хотя поля у них одинаковынет - почему не равны, понятно. в чем разница подходов к созданию двух объектов: за и против.
...
Рейтинг: 0 / 0
06.01.2013, 10:52
    #38100871
ланцепуп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
Яростный Мечланцепупв чем принципиальная разница между x и yэто ссылки на два различных объекта, потому они не равны друг другу.

по поводу разницы между new test(); и test(); - в данном случае оба варианта возвращают {a:1, b:'abc'};
данная фича описана здесь . Суть в том, что если функция возвращает объект, то она не будет работать как стандартный конструктор (т.е. операция new как бы не при делах).

а вот если сделать так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
var test = (function() {
	var obj = {a:1, b:'abc'};
	return function() {
		return obj;
	};
})();

var x = new test();
var y = test();


то x и y будут ссылаться физически на один и тот же объект, т.е. (x == y) будет true.
так можно реализовать паттерн синглтон в js (new не будет создавать новые объекты).интересно. примерно эта цель преследуется.
при определенном условии будет нужно получить или единичный объект или фабрику объектов. если принципиальных подводных камней нет, можно оставить стартовую конструкцию.
...
Рейтинг: 0 / 0
06.01.2013, 10:57
    #38100873
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
Яростный Меч..x и y будут ссылаться физически на один и тот же объект, т.е. (x == y) будет true.
так можно реализовать паттерн синглтон в js (new не будет создавать новые объекты).
Как я понял фишка в том же что и в картинке ? Экземпляр obj хранится в замыкании и внутренняя функция будет всегда возвращать этот экземпляр?
...
Рейтинг: 0 / 0
06.01.2013, 14:18
    #38100959
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница
LexxxxxЯростный Меч..x и y будут ссылаться физически на один и тот же объект, т.е. (x == y) будет true.
так можно реализовать паттерн синглтон в js (new не будет создавать новые объекты).
Как я понял фишка в том же что и в картинке ? Экземпляр obj хранится в замыкании и внутренняя функция будет всегда возвращать этот экземпляр?да.
"внутренняя" функция, доступная извне как test, работает с этим obj
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / В чем разница / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]