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.
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:
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
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.
O di sini sebenarnya adalah objek yang biasa kita lihat.
Tiada kelas atau pembina dalam JavaScript.
Gunakan
new
untuk mencipta objekWalaupun tiada pembina dalam js, perkataan ini juga digunakan dalam dokumentasi MDN: https://developer.mozilla.org...
Walaupun ES6 menambah kelas, ia hanyalah gula sintaksis:
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?
Di atas, kecuali fungsi anak panah es6.new
Setiap fungsi dalam js adalah bersamaan dengan pembina (kecuali untuk fungsi anak panah ES6 yang sebenar).
Hei, js yang menakjubkan!