2015-07-11 35 views
13

(1) ve (2) arasındaki önemli farklılıklar (semantik, performansla ilgili vb.) Var mı? var obj = obj || {}; (obj || {}) vs Object (obj)

  • var obj = Object(obj);
  • Bağlam

    1. .
      Birincisi, Django'nun şablonlarında ve js dosyalarında değişkenleri paylaşma biçimim. Sadece (pg "Boolean, Number, String, ve Nesne dönüştürme için İşlevleri" 79.) Rauschmayer 2014 bir bölüm geldi, şöyle diye Object(obj) tarif burada: obj bir nesnedir

      • obj eğer
      • {}objundefined veya null ise,
      • obj temel bir değer ise, [ilkel sarılmış].

      Verilen ki (çok gayri) semantik (özellikle ilk iki hükümler), biz kullanabilirsiniz geliyor bana (2) kullanacağımız yerde (1), ama tamamen emin değilim hangi sonuçları bu sahip olacak.

      Rauschmayer, Axel (2014) Speaking JavaScript (çevrimiçi okumakta serbesttir).

    +2

    '1 'yaygın bir deyim,' 2 'değil. Kodunuzu çoğu programcı için anlaşılabilir hale getirmek için, her zamanki sözdizimini kullanın. – Barmar

    cevap

    13

    Evet, verdiğiniz alıntıdan daha önce de belirttiğiniz gibi bir fark var. İlk gösterim, obj ilkel olduğunda ilkel kendini geri döndürecektir. İkincisi, bir nesne olan sarılmış ilkelini döndürecektir. Kodun geri kalanı bir nesne olmak üzere obj belgesine dayanıyorsa, ikinci gösterim daha savunmasızdır.

    Fakat sonra tekrar, ilk gösterim daha yaygındır ve bir ilkel değerin zaten obj adlı bir değişkene nasıl atanacağını merak edebilir.

    +1

    Düşünceleriniz için teşekkür ederiz. Çok yararlı. – Readingtao