2016-08-25 4 views
3

Я изучаю WebRTC tutorial из кодека Google.Что нового() в node.js

В разделе index.js для Node.js. У меня есть следующая строка.

var fileServer = new(nodeStatic.Server)(); 

Я понимаю, что new является оператором для создания экземпляров. Но это выше используется new(nodeStatic.Server)(), что меня смущает.

Может кто-нибудь объяснить это мне? Благодарю.

+1

'nodeStatic.Server' - это конструктор. 'new' вызывает его. – zerkms

+1

Это 'новый' +' (nodeStatic.Server) '. Вы можете опустить скобку, и это не изменит ситуацию. И, вероятно, вы должны, поскольку они действительно запутывают. – Bergi

+0

Спасибо! zerkms и Bergi. – Chiu

ответ

4

nodeStatic.Server, по-видимому, является конструктором. Итак, ваш код работает так:

let serverConstructor = nodeStatic.Server; 
let fileServer = new serverConstructor(); 

В круглых скобках используются в исходном коде, чтобы сделать конкурирующее преимущество между new, () и . оператором чуть более очевидным. Вам нужно изучить правила приоритета в спецификации Javascript, чтобы увидеть, действительно ли нужны парсеры вокруг nodeStatic.Server или нет (кажется, что это не так, но требуется некоторое подробное знание спецификации или запуск ваших собственных тестов, чтобы это знать) ,

+0

Это объясняется очень четко. Благодаря! Примите это как ответ. – Chiu

+2

Я просто думаю, что дополнительные круглые скобки запутывают. : - \ – RobG