JavaScript继承基础强化笔记分享
出于安全考虑,本地类和宿主类不能继承,其他都可以继承。ECMAScript并没有严格的定义抽象类,但是存在一些不允许使用的类。子类将继承超类的所有属性和方法,包括构造函数及方法的实现。记住,所有属性和方法都是公用的,因此子类可直接访问这些方法。子类还可 添加 超类中没有的新属性和方法,也可以 覆盖 超类的属性和方法。
JavaScript 中的继承机制并不是明确规定的,而是通过 模仿 实现的。这意味着所有的继承细节并非完全由解释程序处理。
对象冒充
说白了就是先写一个超类A的构造方法。再写一个类B的构造方法;
然后在B的方法中引用A的构造方法;
使用之后再删除ClassA的引用。
定义子类属性(所有的子类新属性在删除引用后定义)
<span style="font-size: 14px;">// 超类ClassA的构造方法function ClassA(sColor) {<br/> this.color = sColor; this.sayColor = function () {、<br/> alert(this.color);<br/> };<br/>}// 子类ClassB的构造方法function ClassB(sColor, sName) {<br/> // 引用ClassA的构造方法<br/> this.newMethod = ClassA; // 使用ClassA的构造方法够照ClassB<br/> this.newMethod(sColor); // 删除对ClassA的引用<br/> delete this.newMethod; /* 所有的子类新属性在删除引用后定义 */<br/> // 子类属性<br/> this.name = sName; this.sayName = function () {<br/> alert(this.name);<br/> };<br/>}</span>
对象冒充可以实现多重继承
一个类可以继承多个超类。
ClassX 和 ClassY,ClassZ 想继承这两个类。
如果存在两个类 ClassX 和 ClassY 具有同名的属性或方法,ClassY 具有高优先级。
因为它从后面的类继承。
<span style="font-size: 14px;">function ClassZ() {<br/> // 继承ClassX<br/> this.newMethod = ClassX; this.newMethod(); delete this.newMethod; //继承ClassY<br/> this.newMethod = ClassY; this.newMethod(); delete this.newMethod;<br/>}</span>
call()方法
call() 方法是与经典的对象冒充方法最相似。
一个参数用作 this 的对象。其他参数都直接传递给函数自身。
<span style="font-size: 14px;">function ClassB(sColor, sName) {<br/> /*<br/> 将classB付给ClassA中的this<br/> 这时classA中的this实际指向是ClassB<br/> */<br/> ClassA.call(this, sColor); this.name = sName; this.sayName = function () {<br/> alert(this.name);<br/> };<br/>}</span>
apply() 方法
两个参数,用作 this 的对象和要传递给函数的参数的数组。
apply第二个参数只能是数组
<span style="font-size: 14px;">function ClassB(sColor, sName) {<br/> // 引用ClassA构造方法<br/> ClassA.apply(this, new Array(sColor)); // 也可以使用arguments<br/> // 只有超类中的参数顺序与子类中的参数顺序完全一致时才可以传递参数对象<br/> // ClassA.apply(this, arguments);<br/> // ClassB 自己的属性<br/> this.name = sName; this.sayName = function () {<br/> alert(this.name);<br/> };<br/>}</span>
原型链(prototype chaining)
继承这种形式在 ECMAScript 中原本是用于 原型链 的。
<span style="font-size: 14px;">// ClassA的构造方法function ClassA() {<br/> //要求为空,全部写在prototype上}// ClassA的属性ClassA.prototype.color = "blue";<br/>ClassA.prototype.sayColor = function () {<br/> alert(this.color);<br/>};// ClassB的构造方法function ClassB() {}// 继承ClassA的属性ClassB.prototype = new ClassA();// ClassB自己的属性,需要出现在继承之后ClassB.prototype.name = "";<br/>ClassB.prototype.sayName = function () {<br/> alert(this.name);<br/>};</span>
关于 instanceof 运算
在原型链中,instanceof 运算符的运行方式也很独特。对 ClassB 的所有实例,instanceof 为 ClassA 和 ClassB 都返回 true。
<span style="font-size: 14px;">var objB = new ClassB();<br/>alert(objB instanceof ClassA); //输出 "true"alert(objB instanceof ClassB); //输出 "true"</span>
混合方式
<span style="font-size: 14px;">// ClassA的构造方法,只写属性,不写函数function ClassA(sColor) {<br/> this.color = sColor;<br/>}// 使用原型给ClassA赋予函数ClassA.prototype.sayColor = function () {<br/> alert(this.color);<br/>};// ClassB的构造方法function ClassB(sColor, sName) {<br/> // 先调用ClassA,继承ClassA的属性<br/> ClassA.call(this, sColor); this.name = sName;<br/>}// 再通过原型链继承ClassA的函数ClassB.prototype = new ClassA();// 通过原型链定义自己的函数ClassB.prototype.sayName = function () {<br/> alert(this.name);<br/>};</span>
ClassB 构造函数中,用对象冒充继承 ClassA 类的 sColor 属性。
在第二行突出显示的代码中,用原型链继承 ClassA 类的方法。
JavaScript基础强化笔记-继承
出于安全考虑,本地类和宿主类不能继承,其他都可以继承。
ECMAScript并没有严格的定义抽象类,但是存在一些不允许使用的类。
子类将继承超类的所有属性和方法,包括构造函数及方法的实现。记住,所有属性和方法都是公用的,因此子类可直接访问这些方法。子类还可 添加 超类中没有的新属性和方法,也可以 覆盖 超类的属性和方法。
JavaScript 中的继承机制并不是明确规定的,而是通过 模仿 实现的。这意味着所有的继承细节并非完全由解释程序处理。
对象冒充
说白了就是先写一个超类A的构造方法。再写一个类B的构造方法;
然后在B的方法中引用A的构造方法;
使用之后再删除ClassA的引用。
定义子类属性(所有的子类新属性在删除引用后定义)
<span style="font-size: 14px;">// 超类ClassA的构造方法function ClassA(sColor) {<br/> this.color = sColor; this.sayColor = function () {、<br/> alert(this.color);<br/> };<br/>}// 子类ClassB的构造方法function ClassB(sColor, sName) {<br/> // 引用ClassA的构造方法<br/> this.newMethod = ClassA; // 使用ClassA的构造方法够照ClassB<br/> this.newMethod(sColor); // 删除对ClassA的引用<br/> delete this.newMethod; /* 所有的子类新属性在删除引用后定义 */<br/> // 子类属性<br/> this.name = sName; this.sayName = function () {<br/> alert(this.name);<br/> };<br/>}</span>
对象冒充可以实现多重继承
一个类可以继承多个超类。
ClassX 和 ClassY,ClassZ 想继承这两个类。
如果存在两个类 ClassX 和 ClassY 具有同名的属性或方法,ClassY 具有高优先级。
因为它从后面的类继承。
<span style="font-size: 14px;">function ClassZ() {<br/> // 继承ClassX<br/> this.newMethod = ClassX; this.newMethod(); delete this.newMethod; //继承ClassY<br/> this.newMethod = ClassY; this.newMethod(); delete this.newMethod;<br/>}</span>
call()方法
call() 方法是与经典的对象冒充方法最相似。
一个参数用作 this 的对象。其他参数都直接传递给函数自身。
<span style="font-size: 14px;">function ClassB(sColor, sName) {<br/> /*<br/> 将classB付给ClassA中的this<br/> 这时classA中的this实际指向是ClassB<br/> */<br/> ClassA.call(this, sColor); this.name = sName; this.sayName = function () {<br/> alert(this.name);<br/> };<br/>}</span>
apply() 方法
两个参数,用作 this 的对象和要传递给函数的参数的数组。
apply第二个参数只能是数组
<span style="font-size: 14px;">function ClassB(sColor, sName) {<br/> // 引用ClassA构造方法<br/> ClassA.apply(this, new Array(sColor)); // 也可以使用arguments<br/> // 只有超类中的参数顺序与子类中的参数顺序完全一致时才可以传递参数对象<br/> // ClassA.apply(this, arguments);<br/> // ClassB 自己的属性<br/> this.name = sName; this.sayName = function () {<br/> alert(this.name);<br/> };<br/>}</span>
原型链(prototype chaining)
继承这种形式在 ECMAScript 中原本是用于 原型链 的。
<span style="font-size: 14px;">// ClassA的构造方法function ClassA() {<br/> //要求为空,全部写在prototype上}// ClassA的属性ClassA.prototype.color = "blue";<br/>ClassA.prototype.sayColor = function () {<br/> alert(this.color);<br/>};// ClassB的构造方法function ClassB() {}// 继承ClassA的属性ClassB.prototype = new ClassA();// ClassB自己的属性,需要出现在继承之后ClassB.prototype.name = "";<br/>ClassB.prototype.sayName = function () {<br/> alert(this.name);<br/>};</span>
关于 instanceof 运算
在原型链中,instanceof 运算符的运行方式也很独特。对 ClassB 的所有实例,instanceof 为 ClassA 和 ClassB 都返回 true。
<span style="font-size: 14px;">var objB = new ClassB();<br/>alert(objB instanceof ClassA); //输出 "true"alert(objB instanceof ClassB); //输出 "true"</span>
混合方式
<span style="font-size: 14px;">// ClassA的构造方法,只写属性,不写函数function ClassA(sColor) {<br/> this.color = sColor;<br/>}// 使用原型给ClassA赋予函数ClassA.prototype.sayColor = function () {<br/> alert(this.color);<br/>};// ClassB的构造方法function ClassB(sColor, sName) {<br/> // 先调用ClassA,继承ClassA的属性<br/> ClassA.call(this, sColor); this.name = sName;<br/>}// 再通过原型链继承ClassA的函数ClassB.prototype = new ClassA();// 通过原型链定义自己的函数ClassB.prototype.sayName = function () {<br/> alert(this.name);<br/>};</span>
ClassB 构造函数中,用对象冒充继承 ClassA 类的 sColor 属性。
-
在第二行突出显示的代码中,用原型链继承 ClassA 类的方法。
相关推荐:
JavaScript继承之原型式继承、寄生式继承、寄生组合式继承用法实例详解
Atas ialah kandungan terperinci JavaScript继承基础强化笔记分享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

AI Hentai Generator
Menjana ai hentai secara percuma.

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



Bagaimana untuk memadamkan nota Xiaohongshu? pandangan! Tutorial penggunaan Xiaohongshu Cara memadam nota Xiaohongshu 1. Mula-mula buka APP Xiaohongshu dan masukkan halaman utama, pilih [Saya] di sudut kanan bawah untuk memasuki kawasan khas 2. Kemudian di kawasan Saya, klik pada halaman nota sebagai ditunjukkan di bawah , pilih nota yang anda mahu padamkan;

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

Sebagai pengguna Xiaohongshu, kita semua pernah menghadapi situasi di mana nota yang diterbitkan tiba-tiba hilang, yang sudah pasti mengelirukan dan membimbangkan. Dalam kes ini, apa yang perlu kita lakukan? Artikel ini akan menumpukan pada topik "Apa yang perlu dilakukan jika nota yang diterbitkan oleh Xiaohongshu hilang" dan memberi anda jawapan terperinci. 1. Apakah yang perlu saya lakukan jika nota yang diterbitkan oleh Xiaohongshu tiada? Pertama, jangan panik. Jika anda mendapati nota anda tiada, bertenang adalah kunci dan jangan panik. Ini mungkin disebabkan oleh kegagalan sistem platform atau ralat operasi. Menyemak rekod keluaran adalah mudah. Cuma buka Apl Xiaohongshu dan klik "Saya" → "Terbitkan" → "Semua Penerbitan" untuk melihat rekod penerbitan anda sendiri. Di sini anda boleh mencari nota yang disiarkan sebelum ini dengan mudah. 3.Siaran semula. Jika dijumpai

Bagaimana untuk menambah pautan produk dalam nota dalam Xiaohongshu? Dalam aplikasi Xiaohongshu, pengguna bukan sahaja boleh menyemak imbas pelbagai kandungan tetapi juga membeli-belah, jadi terdapat banyak kandungan tentang cadangan membeli-belah dan perkongsian produk yang baik dalam aplikasi ini pada aplikasi ini, anda juga boleh berkongsi beberapa pengalaman membeli-belah, mencari peniaga untuk kerjasama, menambah pautan dalam nota, dll. Ramai orang sanggup menggunakan aplikasi ini untuk membeli-belah, kerana ia bukan sahaja mudah, tetapi juga mempunyai ramai Pakar akan membuat beberapa cadangan Anda boleh menyemak imbas kandungan yang menarik dan melihat sama ada terdapat produk pakaian yang sesuai dengan anda. Mari lihat cara menambah pautan produk pada nota Cara menambah pautan produk ke Xiaohongshu Notes Buka aplikasi pada desktop telefon mudah alih anda. Klik pada halaman utama apl

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

Alat penting untuk analisis saham: Pelajari langkah-langkah untuk melukis carta lilin dalam PHP dan JS, contoh kod khusus diperlukan Dengan perkembangan pesat Internet dan teknologi, perdagangan saham telah menjadi salah satu cara penting bagi banyak pelabur. Analisis saham adalah bahagian penting dalam membuat keputusan pelabur, dan carta lilin digunakan secara meluas dalam analisis teknikal. Mempelajari cara melukis carta lilin menggunakan PHP dan JS akan memberikan pelabur maklumat yang lebih intuitif untuk membantu mereka membuat keputusan yang lebih baik. Carta candlestick ialah carta teknikal yang memaparkan harga saham dalam bentuk candlestick. Ia menunjukkan harga saham

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Pengenalan kepada cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata: Dengan populariti Internet dan kemajuan teknologi, semakin banyak restoran telah mula menyediakan perkhidmatan pesanan dalam talian. Untuk melaksanakan sistem pesanan dalam talian masa nyata, kami boleh menggunakan teknologi JavaScript dan WebSocket. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi dua hala masa nyata antara pelanggan dan pelayan. Dalam sistem pesanan dalam talian masa nyata, apabila pengguna memilih hidangan dan membuat pesanan
