Pertama, tentukan objek OBJ, dan prototipe objek adalah OBJ._PROTO_. Kita dapat menggunakan metode getPrototipe di ES5 untuk menanyakan prototipe OBJ. Kami membuktikan apakah prototipe OBJ sama dengan objek.Prototipe untuk membuktikan apakah prototipe OBJ ada. Jawabannya kembali benar, jadi itu ada. Kemudian kami mendefinisikan fungsi foo (), dan fungsi apa pun memiliki objek prototipe, yaitu, fungsi prototipe. Kami dapat menambahkan atribut apa pun ke prototipe fungsi, dan kemudian berbagi atributnya dengan objek baru yang baru (dua contoh berikut akan diperkenalkan secara rinci).
function foo () {} foo.prototype.z = 3; var obj = foo baru (); obj.x = 1; obj.y = 2; obj.x //1obj.y //2obj.z // 3typeof obj.tostring; //functionObj.valueof (); // foo {x: 1, y: 2, z: 3} obj.hasownproperty ('z'); //PALSUDi sini, poin prototipe OBJ (_proto_) ke properti prototipe fungsi FOO, prototipe titik foo.prototype ke objek.prototype, dan ujung rantai prototipe adalah nol. Melalui HasownProperty, kami dapat memeriksa apakah properti Z ada di OBJ. Itu menunjukkan salah. Tidak ada properti z di OBJ, tetapi dengan mencari rantai prototipe, kami menemukan bahwa itu ada di foo.prototype, jadi obj.z = 3, dan untuk kasus pertama obj.valueof () dan tostring keduanya ada di objek.prototype, jadi objek apa pun memiliki dua properti ini, karena prototipe objek adalah objek. Prototipe. Tentu saja, kecuali untuk kasus khusus berikut,
var obj2 = object.create (null); obj2.valueof (); //belum diartikan
Object.create () membuat objek kosong, dan prototipe objek ini menunjuk ke parameter. Contoh komprehensif berikut menunjukkan kepada Anda cara mengimplementasikan kelas untuk mewarisi kelas lain
// nyatakan personfunction person constructor (nama, usia) {this.name = name; this.age = age;} person.prototype.hi = function () {console.log ('hai, nama saya' +this.name +', usia saya adalah' +this.age);}; person.prototype.prototype = 2; person.prototype.arms_num = 2; orang. ! ');}; function siswa (nama, usia, classnum) {person.call (ini, nama, usia); this.classnum = classnum;} // Buat objek kosong Student.prototype = object.create (person.prototype); // Konstruktor menentukan fungsi untuk membuat objek. Student.prototype.constructor = student; student.prototype.hi = function () {console.log ('hai, nama saya adalah'+this.name+', usia saya adalah'+this.age+'dan kelas saya adalah'+this.classnum);}; student.prototype.learns = function (function) {console. '+sub);}; // Instantiate objek bosnvar bosn = siswa baru (' bosn ', 27,' kelas 3 '); bosn.hi (); // hai, nama saya bosn, usia saya berusia 27 dan kelas saya adalah kelas 3bosn.legs_num; //2bosn.walk (); // Bosn sedang berjalan! Bosn.Learns ('Math'); // Bosn belajar matematikaPoin konstruktor dan siswa ini ke objek instantiated (BOSN), dan prototipe objek ini menunjuk ke prototipe konstruktor.
Kami menggunakan metode Object.Create () untuk membuat objek kosong, dan prototipe objek ini adalah orang.prototype. Keuntungan menulis ini adalah bahwa kita dapat membuat atribut apapun dari studnet.prototype sendiri tanpa memengaruhi atribut orang. Jika Anda menulis orang.prototype = student.prototype secara langsung, maka keduanya menunjuk ke suatu objek pada saat yang sama. Saat menambahkan atribut ke Student.Prototype, atribut yang sama juga akan ditambahkan ke rantai prototipe orang.
Untuk metode panggilan pada siswa konstruktor, bagian dalam ini menunjuk pada objek instantiated dari siswa yang baru dibuat, dan mewarisi melalui panggilan.
Student.prototype.constructor = Siswa, makna kalimat ini adalah untuk menentukan bahwa siswa adalah fungsi yang menciptakan objek Student.prototype. Jika Anda tidak menulis kalimat ini, fungsi objek masih ada orang.
Ada tiga cara untuk menerapkan warisan.
function person (name, use) {this.name = name; this.age = usia;} function student () {} student.prototype = person.prototype; //1student.prototype = object.create (person.prototype); //2student.prototype = orang baru (); // 3Rantai prototipe JS di atas dan analisis warisan (pengalaman pertama) adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.