Ответ 1
В принципе, этот синтаксис позволяет вызывать _.Em()
в контексте объекта window
вместо _
.
Предполагая, что у вас есть этот код:
Foo = function() {
this.foo = "foo";
};
Foo.prototype.Em = function() {
alert(this.foo);
};
var _ = new Foo();
Выдача _.Em()
приведет к вызову Em()
в контексте _
. Внутри функции ключевое слово this
будет ссылаться на _
, поэтому foo
будет напечатано.
Выдача (0, _.Em)()
отменяет вызов метода от объекта и выполняет вызов в глобальном контексте. Внутри функции ключевое слово this
будет ссылаться на window
, поэтому undefined
будет напечатано, так как window
не имеет свойства foo
.
Вы можете проверить разницу между двумя синтаксисами в этой скрипте.