Просто установите свойство (в данном случае statsd
) для нового объекта (new StatsD()
):
function Metrics(params) {
//Initialize params
this.statsd = new StatsD();
}
Вы также можете прикрепить StatsD
к prototype
: [117 ]
Metrics.prototype.statsd = StatsD();
Короткий ответ слева направо с оценкой короткого замыкания. Порядок предсказуем.
// perfectly legal and quite a standard way to express in C++/C#
if( x != null && x.Count > 0 ) ...
Некоторые языки оценивают все в условии до перехода (например, VB6).
// will fail in VB6 if x is Nothing.
If x Is Not Nothing And x.Count > 0 Then ...
Ссылка: MSDN Операторы C # и их порядок или приоритет.
Они определены для оценки слева направо, и , чтобы прекратить оценку, когда один из них оценивается как ложь. Это верно как для C ++, так и для C #.
Я не думаю, что есть и не было другого пути. Это было бы похоже на то, что компилятор решает без причины запускать операторы вне очереди. :) Теперь в некоторых языках (например, VB.NET) есть разные логические операторы для замыкания, а не для замыкания. Но порядок всегда четко определяется во время компиляции.
Вот приоритет оператора из спецификации языка C #. Из спецификации ...
За исключением операторов присваивания, все бинарные операторы левоассоциативный, то есть операции выполняются слева направо право. Например, x + y + z равно вычисляется как (x + y) + z.
Они должны выполняться слева направо. Это позволяет работать с оценкой короткого замыкания.
См. статью Википедии для получения дополнительной информации.