Предыдущая страница ссылка в wp-пекарне

Выражение new C(arg1, arg2):

Предполагая, что C является функцией JavaScript (иначе вы получите сообщение об ошибке):

  1. Создает новый пустой объект (без свойств)
  2. Устанавливает прототип нового объекта в значение свойства [prototype "C. Примечание. Значение по умолчанию для функции prototype для объекта - это объект (автоматически созданный при объявлении функции), с его прототипом, установленным на Object.prototype и свойство constructor, указывающим на функцию C. Примечание. Терминология может вводить в заблуждение. Свойством, названным «прототипом», является не так же, как прототип объекта. Только функции имеют свойство «прототип», но все объекты имеют прототип.
  3. Вызывает функцию C с параметром 'this', установленным для нового объекта, и с прилагаемыми аргументами.
  4. Если вызов функции C возвращает объект, этот объект является результатом выражения. В противном случае вновь созданный объект является результатом выражения.

Альтернативой new в ECMAScript 5 будет использование встроенного метода Object.createObject.

new C(arg1, arg2) будет эквивалентен:

var obj = Object.createObject(C.prototype);
C.apply(obj, [arg1, arg2]);

Стандартный JavaScript не позволяет вам явно установить прототип объекта, поэтому Object.createObject не может быть реализован на самом языке. Некоторые реализации позволяют это через нестандартное свойство __proto__. В этом случае new C можно моделировать следующим образом:

var obj = {};
obj.__proto__ = C.prototype;
C.apply(obj, [arg1, arg2]);
0
задан J.K 28 March 2019 в 04:43
поделиться