разница между функцией () {} и новой функцией () {} [duplicate]

Удивительно, что никто не упоминает хорошее старое разделение по модулю 2:

In : x = (x + 1)  % 2 ; x
Out: 1

In : x = (x + 1)  % 2 ; x
Out: 0

In : x = (x + 1)  % 2 ; x
Out: 1

In : x = (x + 1)  % 2 ; x
Out: 0

Обратите внимание, что это эквивалентно x = x - 1, но преимущество метода по модулю заключается в том, что размер группы или длина интервала может быть больше, чем только 2 элемента, что дает вам аналогичную циклическую схему чередования для циклического перехода.

Теперь только для 2, переключение может быть немного короче (с использованием битового оператора):

x = x ^ 1
24
задан riship89 11 May 2012 в 20:06
поделиться

2 ответа

PersonX = function(){};

Помещает ссылку на анонимную функцию на PersonX. PersonX указывает на функцию.

PersonY = new function(){};

Помещает ссылку на вновь созданный экземпляр анонимной функции-конструктора в PersonY. PersonY указывает на объект.


Что касается прототипа, у него есть PersonY. Однако, поскольку не было никаких свойств и методов, связанных с конструктором до или после экземпляра, у него есть пустой прототип *.

Фактически вы можете проверить прототип PersonY, выполнив console.log(PersonY). Вы увидите, что у него есть свойство прототипа (я вижу его как __proto__ в Chrome), который является «пустым». Но он имеет 2 скрытых свойства, constructor, который является конструкторской функцией, создавшей объект, и другой __proto__, который ведет вас к следующей «цепочке», которая будет объектом Object.

* Не совсем пустая, так как прототип - это цепочка. Этот уровень прототипа может быть пустым, но следующий более высокий прототип может иметь или в этом случае иметь свойства и методы.

Object prototype -> Constructor prototype -> Your Instance will have:
- toString()        - blank                  - toString()
- hasOwnProperty()                           - hasOwnProperty()
- and more...                                - and more...
                                             - ...but nothing from Constructor
34
ответ дан Joseph 3 September 2018 в 15:42
поделиться

Это потому, что на самом деле это объект, созданный в памяти как копия функции; прототип действительно имеет смысл только в контексте создания экземпляра, поэтому после его создания нет логической конструкции для того, что это значит.

0
ответ дан Tejs 3 September 2018 в 15:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: