Rumah  >  Soal Jawab  >  teks badan

Adakah JavaScript menjamin susunan sifat objek?

<p>Jika saya mencipta objek seperti ini: </p> <pre class="brush:php;toolbar:false;">var obj = {}; obj.prop1 = "Foo"; obj.prop2 = "Bar";</pre> <p>Adakah objek hasil sentiasa kelihatan seperti ini? </p> <pre class="brush:php;toolbar:false;">{ prop1 : "Foo", prop2 : "Bar" }</pre> <p>Iaitu, adakah sifat dalam susunan yang sama seperti yang saya tambahkan? </p>
P粉287254588P粉287254588430 hari yang lalu481

membalas semua(2)saya akan balas

  • P粉186897465

    P粉1868974652023-08-18 15:31:03

    Ya (tetapi tidak selalu dalam susunan sisipan).

    Kebanyakan penyemak imbas mengulangi sifat objek dalam susunan berikut:

    1. Kunci integer positif dalam tertib menaik (dan rentetan yang menghuraikan kepada integer, seperti "1")
    2. Kunci rentetan dalam susunan sisipan (ES2015 menjamin ini, semua pelayar menghormatinya)
    3. Nama simbol dalam susunan sisipan (ES2015 menjamin ini, semua pelayar menghormatinya)

    Sesetengah pelayar lama menggabungkan kategori 1 dan kategori 2, mengulangi semua kekunci dalam susunan sisipan. Jika kunci anda mungkin akan dihuraikan sebagai integer, sebaiknya jangan bergantung pada mana-mana susunan lelaran tertentu.

    Spesifikasi bahasa semasa (sejak ES2015) mengekalkan tertib sisipan, tetapi penyemak imbas berbeza berkelakuan berbeza dalam kes kekunci yang memutuskan kepada integer positif (seperti "7" atau "99"). Contohnya, Chrome/V8 tidak menghormati susunan sisipan apabila kunci dihuraikan sebagai nombor.

    Spesifikasi bahasa lama (pra-ES2015): Tertib lelaran secara teknikalnya tidak ditentukan, tetapi semua penyemak imbas utama mematuhi gelagat ES2015.

    Sila ambil perhatian bahawa tingkah laku ES2015 ialah contoh spesifikasi bahasa yang baik yang didorong oleh tingkah laku sedia ada, bukan sebaliknya. Untuk menyelam lebih mendalam tentang pemikiran keserasian ke belakang ini, lihat http://code.google.com/p/v8/issues/detail?id=164, pandangan terperinci tentang keputusan reka bentuk gelagat tertib lelaran Chrome pelaporan pepijat Chrome. Menurut satu ulasan (agak subjektif) dalam laporan pepijat ini:

    balas
    0
  • P粉478445671

    P粉4784456712023-08-18 12:36:40

    Sejak ES2015, susunan lelaran objek mengikut peraturan tertentu, tetapi ia tidak selalu mengikut tertib sisipan. Ringkasnya, tertib lelaran ialah gabungan tertib sisipan untuk kekunci rentetan dan tertib menaik untuk kekunci seperti angka:

    // 键的顺序:1, foo, bar
    const obj = { "foo": "foo", "1": "1", "bar": "bar" }

    Ini boleh dicapai dengan lebih baik menggunakan tatasusunan atau objek PetaMap对象可以更好地实现这一点。 MapObject. Peta mempunyai beberapa persamaan dengan Objek dan dijamin untuk mengulangi kekunci dalam susunan sisipan, tanpa pengecualian:

    Perlu diingat bahawa sebelum ES2015, susunan sifat dalam objek tidak dijamin sama sekali. Definisi objek daripada ECMAScript Edisi Ke-3 (pdf) :

    balas
    0
  • Batalbalas