48 / 87 / 11
Регистрация: 12.08.2013
Сообщений: 474

Использование функций конструкторов

21.09.2013, 18:29. Показов 668. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть ли разница как использовать функцию конструктор с оператором new или без?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.09.2013, 18:29
Ответы с готовыми решениями:

Использование дружественных функций и конструкторов преобразования
Компилятор MVS 2017 выдает две ошибки: Ошибка C2679 бинарный "+": не найден оператор, принимающий правый операнд типа "int"...

Использование конструкторов. Перегрузка конструкторов. Использование свойств
Помогите реализовать свойства, позволяющие осуществить проверку на допустимые значения для данных класса. using System; using...

Использование конструкторов и деструкторов
Решить в консольном режиме: Дан набор из N вещественных чисел. Проверить, образует ли данный набор возрастающую последовательность. Если...

5
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
21.09.2013, 20:49
простенький пример, из которого, имхо, всё становится понятным:
JavaScript
1
2
3
4
5
6
7
function A () {return 5}
 
var B = new A ();
var C =     A ();
 
alert (B);
alert (C);
1
48 / 87 / 11
Регистрация: 12.08.2013
Сообщений: 474
21.09.2013, 23:23  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
простенький пример, из которого, имхо, всё становится понятным:
JavaScript
1
2
3
4
5
6
7
function A () {return 5}
 
var B = new A ();
var C =     A ();
 
alert (B);
alert (C);
во втором случае понятно, что там результат вызова функции присваивается, а вот если предопределёнными конструкторами пользоваться, есть разница?

JavaScript
1
2
3
4
5
var B = new Array ();
var C =     Array ();
 
alert (typeof B);
alert (typeof C);
0
 Аватар для vovandr
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
22.09.2013, 00:11
Функция конструктор без new (хотя по идее это не какой не конструктор) по дефолту возвращает тот же результат что и обычная функция (undefined). При вызове с new функция будет возвращать объект (контекст this внутри этой функции будет ссылаться на этот создаваемый объект, без new будет ссылаться на window)
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.09.2013, 08:03
Также, если функция, вызванная в качестве конструктора, вернет какой-то объект, то именно он станет результатом оператора new.
JavaScript
1
2
>>> new (function () { return [this, window]; })()
Array [Object, Window]
1
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
22.09.2013, 12:18
Цитата Сообщение от Justff Посмотреть сообщение
а вот если предопределёнными конструкторами пользоваться, есть разница?
JavaScript
1
2
3
4
var B = new Array ();
var C =     Array ();
alert (typeof B);
alert (typeof C);
ваш пример не совсем удачен

посмотрите следующее:
JavaScript
1
2
3
4
var B = new String ('abc');
var C =     String ('abc');
alert (typeof B);
alert (typeof C);
String - это ведь тоже предопределённая функция-конструктор

согласно спецификации, оператор new вызывает внутренний метод [[Construct]], который выделяет память под создание именно объекта и под сам объект
-------

кроме того, массив - это специфический объект, ибо только он имеет свойство length
и потому в случае функции-конструктора Array, ИМХО, лучше было проверять не через typeof, а так:
JavaScript
1
2
3
alert ('length' in C);
// или
alert (С.hasOwnProperty('length'));
кстати, попробуйте ещё и так:
JavaScript
1
2
3
4
5
6
7
8
var D = new Array;
var E = Array;
 
alert (D.typeof); // object 
alert (E.typeof); // function
 
alert ('length' in D); // true
alert ('length' in E); // true, что как бы неожиданно, не правда ли? :))
последнее, ИМХО, объясняется просто: JavaScript является слабо типизированным языком, что означает, что JavaScript выполняет преобразования автоматически, в тот момент, когда они необходимы

разумеется, последний вариант надо использовать очень аккуратно, ибо:
JavaScript
1
2
3
4
5
var E = Array;
E [0] = 2;
 
var F = Array;
alert (F [0]);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2013, 12:18
Помогаю со студенческими работами здесь

Использование конструкторов и деструкторов
Решить задачу в консольном режиме Даны целые числа K, N и набор из N целых чисел. Если в наборе присутствует число, меньшее K, то...

Создание и использование конструкторов
Требуется создать новый класс с именем DateFour, с несколькими конструкторами, а затем протестировать созданный класс, используя...

Использование нескольких конструкторов this() сразу
Допустим, имеем следующий код public Debug(Config cfg) { this.cfg = cfg; } public Debug(Device device) { ...

Двойное использование делегирования конструкторов
Есть клас square который сначало делигирует свою роботу предку, но я еще хочу чтобы он затем и делгировал свою роботу конструктору по...

Правильное использование конструкторов и деструкторов
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; class Worker {public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru