Javascript 面向对象 (声明篇)_js面向对象
由于才疏学浅,我不得不将《Javascript 高级程序设计》中的部分内容摘抄过来,这些同时也算是我的读书笔记吧。由于 Javascript 面向对象机制及其的重要,而且内容非常的繁多,在这里就分篇章逐个介绍。
使用对象首先就是声明它(内置的对象当然就不需要了)。该死的 Javascript 总是会让我们死去很多的脑细胞,这篇文章主要说明下声明 Javascript 类的几种方法。
工厂模式
工厂模式可能是很多开发人员使用的一种模式,简单的说这种方法先定义“地基”,然后在往上面扔(绑定)各种功能和属性。下面的代码可能看起来会非常的熟悉:
var oCar = new Object;
oCar.color = "red";
oCar.showColor = function() {
alert(this.color);
}
oCar.showColor();
当然,既然包装成一个类,就要重用它(上面的方法从语法上说仅仅是变量)。可以使用返回特定对象的工厂函数(factory function)将其封装起来:
function createCar() {
var oCar = new Object;
oCar.color = "red";
oCar.showColor = function() {
alert(this.color);
}
return oCar;
}
oCar = createCar();
oCar.showColor();
当然,变通一下,可以在 createCar 函数上加入些参数,这样看起来已经非常地专业了:
function createCar(sColor) {
var oCar = new Object;
oCar.color = sColor;
oCar.showColor = function() {
alert(this.color);
}
return oCar;
}
oCar = createCar();
oCar.showColor();
匿名函数总是让人感觉非常的高深,但是有时候也会迷惑了自己。如果不考虑篇幅,可以外部定义它:
function showColor() {
alert(this.color);
}
function createCar(sColor) {
var oCar = new Object;
oCar.color = sColor;
oCar.showColor = showColor;
return oCar;
}
oCar = createCar();
oCar.showColor();
这样做还有一个好处,就是不用重复定义 oCar.showColor 了(高效率的程序每个人都喜欢)。
构造函数模式
构造函数其实和工厂方式差不多。从代码量上来说,就是省略了构造函数内部没有创建一个对象。
function Car(sColor) {
this.color = sColor;
this.showColor = function () {
alert(this.color);
}
}
oCar = new Car("red");
oCar.showColor();
其实此隐含的对象已经在 new 以后就被实例化了。默认情况下,构造函数返回的就是其 this 的值(所以不必使用 return 返回)。但构造函数模式和工厂模式一样可能会重复定义方法,这点可以参考上述工厂模式的做法避免它(始终看起来不完美)。
原型模式
已经受够重复定义的问题了,那么有没有完美的解决办法呢?当然有。使用原型方法可以有效的避免此类的问题。
function Car() {}
Car.prototype.color = new Array("red", "green", "blue");
Car.prototype.showColor = function() {
alert(this.color);
}
oCar = new Car();
oCar.showColor();
但是使用此模式需要注意的是类中的所有属性和方法都是共用的(其实就是指针)。这意味着虽然被实例化的两个变量,如果其中一处的值被更改,那么另外一个就也会被更改。
注:此段内容有更改,详细请参见这里和这里(感谢 fish 兄弟提出)。
混合模式
看起来越来越完美了,结合上述学到的方法就很容易解决原型模式的问题,这样看起来就更像是专业的程序员了。
function Car(sColor) {
this.color = sColor;
}
Car.prototype.showColor = function() {
alert(this.color);
}
oCar = new Car("red");
oCar.showColor();
上述的方法声明的类, showColor 方法是原型(仅创建了一个实例),其他的都是构造(互不干扰)。
动态原型模式
把自己的方法仍在外面总不是件非常环保的事情,下面的方法就非常的“绿色”:
function Car() {
this.color = "red";
if (typeof Car._initialized == "undefined") {
Car.prototype.showColor = function() {
alert(this.color);
};
Car._initialized = true;
}
}
oCar = new Car("red");
oCar.showColor();
此方法于上述的混合模式效果一致,即在构造函数内定义属性,而方法则使用原型模式。唯一的区别就是赋予对象方法的位置。
混合工厂模式
混合工厂模式可以认为是构造模式与混合模式的整合,因为 function 本身就是一个对象,所以可以使用 new 来实例化(请允许我这样描述)。
function Car() {
var oCar = new Object;
oCar.color = "red";
oCar.showColor = function() {
alert(this.color);
}
return oCar;
}
oCar = new Car();
oCar.showColor();
不过建议避免使用此方法定义,因为于上述的工厂模式一样,它存在重复声明的问题。
选用何种模式?
其实通过上面的描述已经有所结果,通常使用的是 混合模式 与 动态原型模式 (我个人投动态原型模式一票)。不过不要单独使用 工厂模式 与 构造模式 (或者其两者的结合体),因为这样会造成不必要的浪费。
测试代码

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

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Bahasa Go menyokong pengaturcaraan berorientasikan objek melalui definisi jenis dan perkaitan kaedah. Ia tidak menyokong warisan tradisional, tetapi dilaksanakan melalui gubahan. Antara muka menyediakan ketekalan antara jenis dan membenarkan kaedah abstrak ditakrifkan. Kes praktikal menunjukkan cara menggunakan OOP untuk mengurus maklumat pelanggan, termasuk mencipta, mendapatkan, mengemas kini dan memadam operasi pelanggan.

Amalan terbaik OOP dalam PHP termasuk konvensyen penamaan, antara muka dan kelas abstrak, pewarisan dan polimorfisme, dan suntikan kebergantungan. Kes praktikal termasuk: menggunakan mod gudang untuk mengurus data dan menggunakan mod strategi untuk melaksanakan pengisihan.

Pengenalan kepada kaedah mendapatkan kod status HTTP dalam JavaScript: Dalam pembangunan bahagian hadapan, kita selalunya perlu berurusan dengan interaksi dengan antara muka bahagian belakang, dan kod status HTTP adalah bahagian yang sangat penting daripadanya. Memahami dan mendapatkan kod status HTTP membantu kami mengendalikan data yang dikembalikan oleh antara muka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan memberikan contoh kod khusus. 1. Apakah kod status HTTP bermakna kod status HTTP apabila penyemak imbas memulakan permintaan kepada pelayan, perkhidmatan tersebut

Bahasa Go menyokong pengaturcaraan berorientasikan objek, mentakrifkan objek melalui struct, mentakrifkan kaedah menggunakan penerima penunjuk, dan melaksanakan polimorfisme melalui antara muka. Ciri berorientasikan objek menyediakan penggunaan semula kod, kebolehselenggaraan dan enkapsulasi dalam bahasa Go, tetapi terdapat juga pengehadan seperti kekurangan konsep tradisional kelas dan pewarisan dan hantaran tandatangan kaedah.

Tiada konsep kelas dalam erti kata tradisional dalam Golang (bahasa Go), tetapi ia menyediakan jenis data yang dipanggil struktur, yang melaluinya ciri berorientasikan objek yang serupa dengan kelas boleh dicapai. Dalam artikel ini, kami akan menerangkan cara menggunakan struktur untuk melaksanakan ciri berorientasikan objek dan menyediakan contoh kod konkrit. Definisi dan penggunaan struktur Pertama, mari kita lihat definisi dan penggunaan struktur. Di Golang, struktur boleh ditakrifkan melalui kata kunci jenis dan kemudian digunakan di mana perlu. Struktur boleh mengandungi atribut

Gambaran keseluruhan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tandatangan elektronik dalam talian: Dengan kemunculan era digital, tandatangan elektronik digunakan secara meluas dalam pelbagai industri untuk menggantikan tandatangan kertas tradisional. Sebagai protokol komunikasi dupleks penuh, WebSocket boleh melakukan penghantaran data dua hala masa nyata dengan pelayan Digabungkan dengan JavaScript, sistem tandatangan elektronik dalam talian boleh dilaksanakan. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk membangunkan dalam talian yang mudah

Dengan menguasai status objek penjejakan, menetapkan titik putus, pengecualian penjejakan dan menggunakan sambungan xdebug, anda boleh menyahpepijat kod pengaturcaraan berorientasikan objek PHP dengan berkesan. 1. Jejak status objek: Gunakan var_dump() dan print_r() untuk melihat atribut objek dan nilai kaedah. 2. Tetapkan titik putus: Tetapkan titik putus dalam persekitaran pembangunan, dan penyahpepijat akan berhenti seketika apabila pelaksanaan mencapai titik putus, menjadikannya mudah untuk menyemak status objek. 3. Pengecualian jejak: Gunakan blok try-catch dan getTraceAsString() untuk mendapatkan jejak tindanan dan mesej apabila pengecualian berlaku. 4. Gunakan penyahpepijat: Fungsi xdebug_var_dump() boleh memeriksa kandungan pembolehubah semasa pelaksanaan kod.
