переменные javascript, что делает var x = a = {}? - PullRequest
2 голосов
/ 08 июля 2009

Я вижу в jQuery что-то вроде этого:

jQuery.fn = jQuery.prototype = {}

Почему это делается? Разве это не то же самое, просто сказать jQuery.prototype = {}? Я не уверен, что понимаю, что здесь делает Резиг.

Ответы [ 4 ]

13 голосов
/ 08 июля 2009

Так же, как:

jQuery.prototype = {}
jQuery.fn = jQuery.prototype

По моему мнению, все в одной строке делает более понятным, что вы присваиваете обеим переменным одно и то же значение

3 голосов
/ 08 июля 2009

Это эквивалентно:

jQuery.prototype = {}
jQuery.fn = jQuery.prototype

Другими словами, jQuery.fn и jQuery.prototype указывают на один и тот же объект.

2 голосов
/ 08 июля 2009

Следует знать, что в javascript каждое выражение имеет возвращаемое значение, независимо от того, имеет ли оно какие-либо побочные эффекты (присваивания)

Справа налево, у вас есть следующие утверждения:

(jQuery.fn = (jQuery.prototype = ({})))

Оценка первой части дает пустой объект: {}:

(jQuery.fn = (jQuery.prototype = {}))

Второй оператор выполняется и устанавливает для jQuery.prototype значение {}, а также для jQuery.prototype, давая вторую часть:

(jQuery.fn = jQuery.prototype)

, который устанавливает jQuery.fn в jQuery.prototype, который затем оценивается в:

jQuery.fn

который ничего не делает.

2 голосов
/ 08 июля 2009

Оператор x = a = {} означает, что {} назначено a, что присвоено x. Так что это равно a = {}; x = a.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...