Существуют ли какие-либо важные отличия (семантические, связанные с производительностью и т.д.) между (1) и (2)?
-
var obj = obj || {};
-
var obj = Object(obj);
Context. Во-первых, это способ обмена переменными в шаблонах Django и моих js файлах. Я только что наткнулся на раздел в Rauschmayer 2014 ( "Функции для преобразования булевых чисел, чисел, строк и объектов", стр. 79), где он описал Object(obj)
следующим образом:
-
obj
, еслиobj
- объект, -
{}
, еслиobj
-undefined
илиnull
, - [wrapped primitive], если
obj
является примитивным значением.
Учитывая, что (очень неформальная) семантика (особенно первые два предложения), мне кажется, что мы можем использовать (2) везде, где мы будем использовать (1), но я не совсем уверен, какие последствия это будет иметь.
Rauschmayer, Axel (2014) Говорящий JavaScript (бесплатно читать онлайн).