Rumah > Soal Jawab > teks badan
Saya ingat ini bukan pembina Mengapa ini dan yang baru digunakan sama seperti pembina?
学习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.
高洛峰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
出来的结果。如果构造函数没有返回对象,那么new
hasil. 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"
女神的闺蜜爱上我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
習慣沉默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!