2015-04-29 3 views
2

Что я думаю, что это делается, так это посмотреть, был ли этот объект уже создан и существует внутри области? Зачем нам нужно использовать знак тройного равенства?Каково значение этого JavaScript-кода?

function viewmodel(parent) { 

      if (false === (this instanceof viewmodel)) { 
       return new viewmodel(parent); 
      } 

    }; 
+7

Это только педантичный способ сказать 'if (! (This instanceof viewmodel))'. –

+1

Дополнительная информация: [Когда я должен автоматически создавать объект, даже если 'new' забыли?] (Http://stackoverflow.com/q/20859985/1048572) – Bergi

+1

' false === '- это ужасный способ свести на нет boolean value. – Bergi

ответ

6

Вам не нужно строгое сравнение равенства. instanceof дает true или false, так что это вполне достаточно:

if (!(this instanceof viewmodel)) 
3

Тройные равно предотвращает неявное преобразование типа данных.

Для получения дополнительной информации см. this question.

+4

Нет никакого преобразования между 'boolean' и'! Boolean'. – JMM

+3

В этом случае нет. Я дал этот ответ ради полноты, поскольку ОП спросил о том, что тройной знак равен. Как и другие ответы, это несколько лишнее. В других сравнениях это может иметь значение, как видно из связанного вопроса. – Pudd