基于JavaScript实现继承机制之原型链(prototype chaining)的详解_javascript技巧
如果用原型方式重定义前面例子中的类,它们将变为下列形式:
function ClassA() {
}
ClassA.prototype.color = "blue";
ClassA.prototype.sayColor = function () {
alert(this.color);
};
function ClassB() {
}
ClassB.prototype = new ClassA();
原型方式的神奇之处在于最后一行代码。这里,把 ClassB 的 prototype 属性设置成 ClassA 的实例。这很有意思,因为想要 ClassA 的所有属性和方法,但又不想逐个将它们 添加到ClassB 的 prototype 属性。还有比把 ClassA 的实例赋予 prototype 属性更好的方法吗?
注意:调用 ClassA 的构造函数,没有给它传递参数。这在原型链中是标准做法。要确保构造函数没有任何参数。
与对象冒充相似,子类的所有属性和方法都必须出现在 prototype 属性被赋值后,因为在它之前赋值的所有方法都会被删除。为什么?因为 prototype 属性被替换成了新对象,添加了新方法的原始对象将被销毁。所以,为 ClassB 类添加 name 属性和 sayName() 方法的代码如下:
function ClassB() {
}
ClassB.prototype = new ClassA();
ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
alert(this.name);
};
可通过运行下面的例子测试这段代码:
var objA = new ClassA();
var objB = new ClassB();
objA.color = "blue";
objB.color = "red";
objB.name = "John";
objA.sayColor();
objB.sayColor();
objB.sayName();
此外,在原型链中,instanceof 运算符的运行方式也很独特。对 ClassB 的所有实例,instanceof 为 ClassA 和 ClassB 都返回 true。例如:
var objB = new ClassB();
alert(objB instanceof ClassA); //输出 "true"
alert(objB instanceof ClassB); //输出 "true"
在 ECMAScript 的弱类型世界中,这是极其有用的工具,不过使用对象冒充时不能使用该方法判断。但是由于子类的原型被直接重新赋值,所以出现以下这种情况:
console.log(objB.__proto__===objB.constructor.prototype) //false
因为ClassB的原型链 prototype 属性被另一个类的对象重写了。输出结果可以看出objB.__proto__仍然指向的是ClassB.prototype,而不是objB.constructor.prototype。这也很好理解,给Person.prototype赋值的是一个对象直接量new ClassA()实例,使用对象直接量方式定义的对象其构造器(constructor)指向的是根构造器Object,Object.prototype是一个空对象{},{}自然与ClassB.prototype不等。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Prototaip, objek dalam js, digunakan untuk menentukan sifat dan kaedah objek lain. Setiap pembina mempunyai atribut prototaip atribut prototaip pembinanya mewarisi sifat dan kaedah. Rantaian prototaip, apabila cuba mengakses sifat objek, js akan menyemak sama ada objek mempunyai sifat ini Jika tidak, maka js akan beralih kepada prototaip objek Jika objek prototaip tidak mempunyai sifat ini terus mencari prototaip prototaip.

Rantaian skop dan rantaian prototaip ialah dua konsep penting dalam JavaScript, sepadan dengan dua ciri teras skop dan warisan masing-masing: 1. Rantaian skop ialah mekanisme yang digunakan untuk mengurus capaian dan skop berubah dalam JavaScript Ia dibentuk oleh konteks pelaksanaan dan skop leksikal di mana fungsi dicipta; Definisi, akan dicari di sepanjang rantaian prototaip.

Perbezaan antara rantaian prototaip dan prototaip ialah: 1. Prototaip ialah atribut yang dimiliki oleh setiap objek, termasuk beberapa atribut dan kaedah yang dikongsi, yang digunakan untuk merealisasikan perkongsian dan pewarisan atribut dan kaedah antara objek, manakala rantaian prototaip ialah pewarisan. mekanisme dilaksanakan melalui hubungan prototaip antara objek, yang mentakrifkan hubungan warisan antara objek supaya objek boleh berkongsi sifat dan kaedah objek prototaip 2. Fungsi prototaip adalah untuk menentukan sifat dan kaedah yang dikongsi objek, supaya berbilang Objek boleh berkongsi sifat dan kaedah objek prototaip yang sama, dan fungsi rantai prototaip adalah untuk merealisasikan hubungan warisan antara objek, dsb.

Sebab mengapa prototaip dan rantai prototaip wujud adalah untuk melaksanakan pewarisan dan perkongsian sifat objek dalam bahasa JavaScript. Dalam JavaScript, semuanya adalah objek, termasuk fungsi. Setiap objek mempunyai sifat yang dipanggil prototaip yang menunjuk ke objek lain, yang dipanggil objek prototaip. Objek boleh mewarisi sifat dan kaedah daripada objek prototaip. Faedah melaksanakan sifat dan kaedah yang dikongsi melalui prototaip ialah penjimatan memori. Pertimbangkan objek A, yang mempunyai beberapa sifat dan kaedah, kemudian buat objek B dan buat

Rantaian prototaip, secara mudah difahami ialah rantai yang terdiri daripada prototaip. Apabila mengakses atribut objek, ia akan mencari pada atribut objek itu sendiri Jika ia tidak dijumpai, ia akan mencari pada prototaip tersirat __proto__, iaitu, prototaip pembinanya namun, Ia kemudiannya akan mencari dalam __proto__ prototaip pembina Dengan cara ini, mencari lapisan atas demi lapisan akan membentuk struktur rantai, yang dipanggil rantaian prototaip.

Analisis mendalam: Peranan rantai prototaip dan prototaip dalam pengaturcaraan berorientasikan objek memerlukan contoh kod khusus Dalam pengaturcaraan berorientasikan objek (OOP), prototaip (Prototaip) dan rantaian prototaip (PrototypeChain) adalah konsep penting. Mereka menyediakan mekanisme penggunaan semula kod berasaskan objek dan memainkan peranan penting dalam bahasa seperti Javascript. Dalam artikel ini, kita akan mendalami konsep prototaip dan rantaian prototaip, meneroka peranannya dalam OOP dan menggambarkan dengan contoh kod konkrit

Fungsi rantai prototaip dan prototaip js adalah untuk merealisasikan pewarisan objek, menjimatkan ruang memori, dan meningkatkan prestasi dan kebolehselenggaraan kod. Pengenalan terperinci: 1. Laksanakan pewarisan objek Prototaip dan rantaian prototaip membolehkan anda mencipta objek dan mewarisi sifat dan kaedah objek lain Apabila anda mencipta objek baharu, anda boleh mengarahkan prototaipnya ke objek lain, supaya objek baru Objek boleh mengakses sifat dan kaedah pada objek prototaip 2. Menjimatkan memori dan meningkatkan prestasi Dalam JavaScript, setiap objek mempunyai prototaip, objek boleh berkongsi prototaip dan sebagainya.

Meneroka ciri unik prototaip dan rantaian prototaip Dalam JavaScript, prototaip dan rantaian prototaip adalah konsep yang sangat penting. Memahami ciri unik prototaip dan rantaian prototaip boleh membantu kami memahami dengan lebih baik warisan dan penciptaan objek dalam JavaScript. Prototaip ialah harta yang dimiliki oleh setiap objek dalam JavaScript yang menunjuk ke objek lain dan digunakan untuk berkongsi sifat dan kaedah. Setiap objek JavaScript mempunyai prototaip
