cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Bukankah ini fungsi literal objek? Mengapa anda memerlukan permulaan baharu?

Saya ingat ini bukan pembina Mengapa ini dan yang baru digunakan sama seperti pembina?

淡淡烟草味淡淡烟草味2746 hari yang lalu892

membalas semua(4)saya akan balas

  • 学习ing

    学习ing2017-07-05 10:54:40

    Sebarang fungsi dalam javascript hanya gunakan new 关键字调用,它都可以被称作 构造函数.

    Apabila menggunakan kata kunci baharu untuk memanggil fungsi, objek akan diisytiharkan secara tersirat di dalam fungsi, dan kemudian objek akan diberikan kepada ini, dan akhirnya ini akan dikembalikan secara tersirat Apabila menggunakan kata kunci baharu untuk memanggil kaedah buku pengarang , ia bersamaan dengan Proses berikut.

    function Book(id, bookname){
        var o = new Object();
        o.id = id;
        o.bookname = bookname;
        return o;
    }
    var b = Book(123,'javascript高级程序设计');

    O di sini sebenarnya adalah objek yang biasa kita lihat.

    balas
    0
  • 高洛峰

    高洛峰2017-07-05 10:54:40

    Tiada kelas atau pembina dalam JavaScript.

    function Book (){}
    
    // Book 是一个函数
    typeof Book
    "function"
    
    // Book 是 Function
    Book instanceof Function
    true
    
    // Book 是 Object
    Book instanceof Object
    true
    

    Gunakan new untuk mencipta objek

    var book = new Book()
    
    // book 是一个对象
    typeof book
    "object"
    
    // book 不是 Function 的实例
    book instanceof Function
    false
    
    // book 是 Object 的实例
    book instanceof Object
    true
    
    // book 是 Book 的实例
    book instanceof Book
    true
    

    Walaupun tiada pembina dalam js, perkataan ini juga digunakan dalam dokumentasi MDN: https://developer.mozilla.org...

    Apabila kod new foo(...) dilaksanakan:

    • Objek baharu dicipta. Ia mewarisi daripada foo.prototype.

    • Pembina foo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。new foo 等同于 new foo(), hanya boleh digunakan apabila tiada parameter dilalui.

    • Jika pembina mengembalikan "objek", maka objek ini akan menggantikan keseluruhan new出来的结果。如果构造函数没有返回对象,那么newhasil. Jika pembina tidak mengembalikan objek, maka hasilnya akan menjadi objek yang dibuat dalam langkah 1. ps: Secara amnya, pembina tidak mengembalikan sebarang nilai, tetapi jika pengguna ingin mengatasi nilai pulangan ini, dia boleh memilih untuk kembalikan objek biasa untuk menimpanya. Sudah tentu, mengembalikan tatasusunan juga akan ditimpa, kerana tatasusunan juga merupakan objek.

    Walaupun ES6 menambah kelas, ia hanyalah gula sintaksis:

    class Book{}
    
    typeof Book
    "function"
    

    balas
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 10:54:40

    Anda salah faham konsep pembina.

    Sebenarnya, tidak sepatutnya ada istilah 'pembina' dalam js, tetapi harus difahami sebagai kaedah pembinaan fungsi. Ini bermakna mana-mana fungsi boleh digunakan, dan mana-mana fungsi boleh dipanggil 'pembina'. Apabila anda menulis apa yang dipanggil "pembina", adakah anda melihat apa-apa perbezaan antara ia dan fungsi biasa? new

    Di atas, kecuali fungsi anak panah es6.

    balas
    0
  • 習慣沉默

    習慣沉默2017-07-05 10:54:40

    Setiap fungsi dalam js adalah bersamaan dengan pembina (kecuali untuk fungsi anak panah ES6 yang sebenar).
    Hei, js yang menakjubkan!

    balas
    0
  • Batalbalas