Rumah hujung hadapan web tutorial js Pengetahuan asas_asas pengaturcaraan berorientasikan objek JavaScript

Pengetahuan asas_asas pengaturcaraan berorientasikan objek JavaScript

May 16, 2016 pm 03:45 PM
javascript berorientasikan objek

Fahami semula berorientasikan objek
Untuk menggambarkan bahawa JavaScript ialah bahasa berorientasikan objek sepenuhnya, pertama sekali perlu bermula dengan konsep berorientasikan objek dan membincangkan beberapa konsep dalam berorientasikan objek:

  1. Semuanya adalah objek
  2. Objek mempunyai ciri pengkapsulan dan pewarisan
  3. Objek menggunakan mesej untuk berkomunikasi antara satu sama lain, dan masing-masing mempunyai maklumat yang disembunyikan

Berdasarkan tiga perkara ini, C ialah bahasa separa berorientasikan objek dan separa prosedur, kerana walaupun ia melaksanakan enkapsulasi kelas, pewarisan dan polimorfisme, terdapat fungsi dan pembolehubah global bukan objek. Java dan C# adalah bahasa berorientasikan objek sepenuhnya. Mereka mengatur fungsi dan pembolehubah dalam bentuk kelas supaya mereka tidak boleh wujud tanpa objek. Tetapi di sini fungsi itu sendiri adalah proses, hanya dilampirkan pada kelas tertentu.

Walau bagaimanapun, berorientasikan objek hanyalah konsep atau idea pengaturcaraan, dan ia tidak sepatutnya bergantung pada bahasa tertentu untuk kewujudannya. Sebagai contoh, Java menggunakan pemikiran berorientasikan objek untuk membina bahasanya, dan ia melaksanakan mekanisme seperti kelas, pewarisan, terbitan, polimorfisme dan antara muka. Walau bagaimanapun, mekanisme ini hanyalah satu cara untuk melaksanakan pengaturcaraan berorientasikan objek, tidak perlu. Dengan kata lain, sesuatu bahasa boleh memilih cara yang sesuai untuk melaksanakan orientasi objek berdasarkan ciri-cirinya sendiri. Oleh itu, oleh kerana kebanyakan pengaturcara mula-mula mempelajari atau menggunakan bahasa kompilasi peringkat tinggi seperti Java dan C (walaupun Java adalah separa tersusun dan separa tafsiran, ia secara amnya dijelaskan sebagai bahasa tersusun), mereka secara prasangka menerima istilah "kelas ". Kaedah pelaksanaan berorientasikan objek, jadi apabila mempelajari bahasa skrip, adalah kebiasaan untuk menggunakan konsep dalam bahasa berorientasikan objek berasaskan kelas untuk menilai sama ada bahasa itu adalah bahasa berorientasikan objek atau sama ada ia mempunyai ciri berorientasikan objek. . Ini juga merupakan salah satu sebab penting yang menghalang pengaturcara daripada mempelajari dan menguasai JavaScript secara mendalam.
Malah, bahasa JavaScript melaksanakan pengaturcaraan berorientasikan objek melalui kaedah yang dipanggil prototaip. Mari kita bincangkan perbezaan antara dua kaedah membina dunia objektif, berorientasikan objek berasaskan kelas dan berorientasikan objek berasaskan prototaip.
Perbandingan antara pendekatan berorientasikan objek berasaskan kelas dan berasaskan prototaip
Dalam pendekatan berorientasikan objek berasaskan kelas, objek dijana berdasarkan kelas. Dalam pendekatan berorientasikan objek berasaskan prototaip, objek dibina menggunakan pembina dan prototaip. Berikan satu contoh daripada dunia objektif untuk menggambarkan perbezaan antara dua cara kognisi. Sebagai contoh, apabila sebuah kilang membina kereta, di satu pihak, pekerja mesti merujuk kepada lukisan kejuruteraan dan reka bentuk menetapkan bagaimana kereta itu harus dikeluarkan. Lukisan kejuruteraan di sini adalah seperti kelas dalam bahasa, dan kereta dihasilkan mengikut kelas ini, sebaliknya, pekerja dan mesin (bersamaan dengan pembina) menggunakan pelbagai bahagian seperti enjin, tayar, Stereng (bersamaan dengan setiap atribut; prototaip) membina kereta.
Malah, masih terdapat perdebatan tentang yang mana antara dua kaedah menyatakan idea berorientasikan objek dengan lebih teliti. Tetapi penulis percaya bahawa prototaip berorientasikan objek adalah pendekatan berorientasikan objek yang lebih teliti atas sebab-sebab berikut:
Pertama sekali, penciptaan objek dalam dunia objektif adalah hasil daripada pembinaan objek fizikal lain, dan "lukisan" abstrak tidak boleh menghasilkan "kereta". penciptaan objek adalah Penciptaan entiti
Kedua, mengikut peraturan berorientasikan objek yang paling asas bahawa segala-galanya adalah objek, kelas itu sendiri bukan objek Walau bagaimanapun, pembina dan prototaip dalam kaedah prototaip adalah objek lain melalui kaedah prototaip.
Ketiga, dalam bahasa berorientasikan objek berasaskan kelas, keadaan objek dipegang oleh contoh objek, dan kaedah tingkah laku objek dipegang oleh kelas yang mengisytiharkan objek, dan hanya struktur dan Kaedah boleh diwarisi. ; dalam bahasa berorientasikan objek prototaip, tingkah laku dan status objek adalah milik objek itu sendiri dan boleh diwarisi bersama (sumber rujukan), yang lebih dekat dengan realiti objektif.
Akhir sekali, bahasa berorientasikan objek berasaskan kelas seperti Java membenarkan sifat statik dan kaedah statik diisytiharkan dalam kelas untuk mengatasi kesulitan tidak dapat menggunakan fungsi dan pembolehubah global dalam bahasa prosedur. Sebenarnya, tidak ada konsep statik yang dipanggil dalam dunia objektif, kerana semuanya adalah objek! Dalam bahasa berorientasikan objek prototaip, kecuali untuk objek terbina dalam, objek global, kaedah atau sifat tidak dibenarkan wujud, dan tiada konsep statik. Semua unsur bahasa (primitif) mesti bergantung pada objek untuk kewujudannya. Walau bagaimanapun, disebabkan oleh ciri-ciri bahasa berfungsi, objek yang bergantung kepada unsur bahasa berubah dengan perubahan dalam konteks masa jalan, yang secara khusus ditunjukkan dalam perubahan dalam penunjuk ini. Ciri inilah yang lebih dekat dengan pandangan semula jadi bahawa "segala-galanya adalah milik sesuatu, dan alam semesta adalah asas untuk kelangsungan hidup semua perkara."


Pengetahuan asas berorientasikan objek JavaScript

Walaupun JavaScript itu sendiri tidak mempunyai konsep kelas, ia masih mempunyai ciri berorientasikan objek, walaupun ia berbeza daripada bahasa berorientasikan objek biasa.

Cara mudah untuk mencipta objek adalah seperti berikut:

function myObject() {

};

JavaScript 中创建对象的方法一般来说有两种:函数构造法和字面量法,上面这种属函数构造法。下面是一个字面量法的例子:

var myObject = {

};

Salin selepas log masuk

Jika anda hanya memerlukan satu objek dan tidak memerlukan contoh objek yang lain, adalah disyorkan untuk menggunakan kaedah literal. Jika berbilang contoh objek diperlukan, pembina fungsi disyorkan.
Tentukan sifat dan kaedah

Kaedah pembinaan fungsi:

function myObject() {
 this.iAm = 'an object';

 this.whatAmI = function() {
 console.log('I am ' + this.iAm);
 };
};

Salin selepas log masuk

Kaedah literal:

var myObject = {
 iAm : 'an object',

 whatAmI : function() {
 console.log('I am ' + this.iAm);
 }
};

Salin selepas log masuk

Objek yang dicipta oleh dua kaedah di atas mempunyai sifat bernama "iAm" dan kaedah bernama "whatAmI". Sifat ialah pembolehubah dalam objek, dan kaedah adalah fungsi dalam objek.

Cara mendapatkan atribut dan kaedah panggilan:

var w = myObject.iAm;

myObject.whatAmI();

Salin selepas log masuk

Apabila memanggil kaedah, anda mesti menambah kurungan selepasnya. Jika anda tidak menambah kurungan, maka ia hanya akan mengembalikan rujukan kepada kaedah tersebut.
Perbezaan antara dua kaedah mencipta objek

  • Apabila mentakrifkan sifat dan kaedah dalam pembina fungsi, anda mesti menggunakan awalan ini, yang tidak diperlukan dalam kaedah literal.
  • Pembina fungsi menggunakan = apabila memberikan nilai kepada sifat dan kaedah, dan kaedah literal menggunakan : .
  • Jika terdapat berbilang sifat atau kaedah, ia harus dipisahkan dengan ; dalam pembina fungsi dan dengan , dalam kaedah literal.

Untuk objek yang dibuat dengan kaedah literal, anda boleh memanggil terus sifat atau kaedahnya menggunakan rujukan objek:

myObject.whatAmI();

Salin selepas log masuk

Untuk pembina fungsi, anda perlu mencipta contoh objek sebelum anda boleh memanggil sifat atau kaedahnya:

var myNewObject = new myObject();
myNewObject.whatAmI();

Salin selepas log masuk

Gunakan pembina

Sekarang mari kembali kepada kaedah pembinaan fungsi sebelumnya:

function myObject() {
 this.iAm = 'an object';
 this.whatAmI = function() {
 console.log('I am ' + this.iAm);
 };
};

Salin selepas log masuk

Sebenarnya, ia kelihatan seperti fungsi Memandangkan ia adalah fungsi, bolehkah saya menghantar parameter kepadanya? Ubah suai kod sedikit:

function myObject(what) {
 this.iAm = what;
 this.whatAmI = function(language) {
 console.log('I am ' + this.iAm + ' of the ' + language + ' language');
 };
};

Salin selepas log masuk

Kemudian nyatakan objek dan masukkan parameter:

var myNewObject = new myObject('an object');
myNewObject.whatAmI('JavaScript');

Salin selepas log masuk

Output akhir program ini ialah saya adalah objek bahasa JavaScript.
Terdapat dua cara untuk mencipta objek, yang manakah harus saya gunakan?

Untuk kaedah literal, kerana ia tidak memerlukan instantiasi, jika nilai objek diubah suai, nilai objek diubah suai secara kekal dan sebarang akses lain akan menjadi nilai yang diubah suai. Untuk pembina fungsi, apabila mengubah suai nilai, nilai contohnya diubah suai Ia boleh menjadikan N objek, dan setiap objek boleh mempunyai nilai yang berbeza tanpa mengganggu satu sama lain. Bandingkan coretan kod berikut.

Mari kita lihat kaedah literal dahulu:

var myObjectLiteral = {
 myProperty : 'this is a property'
};

console.log(myObjectLiteral.myProperty); // log 'this is a property'

myObjectLiteral.myProperty = 'this is a new property';

console.log(myObjectLiteral.myProperty); // log 'this is a new property'

Salin selepas log masuk

Walaupun pembolehubah baharu dicipta untuk menunjuk ke objek ini, hasilnya masih sama:

var myObjectLiteral = {
 myProperty : 'this is a property'
};

console.log(myObjectLiteral.myProperty); // log 'this is a property'

var sameObject = myObjectLiteral;

myObjectLiteral.myProperty = 'this is a new property';

console.log(sameObject.myProperty); // log 'this is a new property'

Salin selepas log masuk

Lihat kaedah pembinaan fungsi sekali lagi:

// 用函数构造法
var myObjectConstructor = function() {
   this.myProperty = 'this is a property'
};

// 实例化一个对象
var constructorOne = new myObjectConstructor();

// 实例化第二个对象
var constructorTwo = new myObjectConstructor();

// 输出
console.log(constructorOne.myProperty); // log 'this is a property'

// 输出
console.log(constructorTwo.myProperty); // log 'this is a property'

和预期一样,两个对象的属性值是一样的。如果修个其中一个对象的值呢?

// 用函数构造法
var myObjectConstructor = function() {
 this.myProperty = 'this is a property';
};

// 实例化一个对象
var constructorOne = new myObjectConstructor();

// 修改对象的属性
constructorOne.myProperty = 'this is a new property';

// 实例化第二个对象
var constructorTwo = new myObjectConstructor();

// 输出
alert(constructorOne.myProperty); // log 'this is a new property'

// 输出
alert(constructorTwo.myProperty); // log 'this is a property'

Salin selepas log masuk

Seperti yang anda boleh lihat, objek berbeza yang dibuat instantiated menggunakan pembina fungsi adalah bebas antara satu sama lain dan setiap satunya boleh mempunyai nilai yang berbeza. Oleh itu, kaedah mana yang hendak digunakan untuk mencipta objek bergantung pada keadaan sebenar.

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

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

Terokai pengaturcaraan berorientasikan objek dalam Go Terokai pengaturcaraan berorientasikan objek dalam Go Apr 04, 2024 am 10:39 AM

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.

Ciri Lanjutan PHP: Amalan Terbaik dalam Pengaturcaraan Berorientasikan Objek Ciri Lanjutan PHP: Amalan Terbaik dalam Pengaturcaraan Berorientasikan Objek Jun 05, 2024 pm 09:39 PM

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.

Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Jan 05, 2024 pm 01:37 PM

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

Adakah terdapat ciri berorientasikan objek seperti kelas di Golang? Adakah terdapat ciri berorientasikan objek seperti kelas di Golang? Mar 19, 2024 pm 02:51 PM

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

Analisis ciri berorientasikan objek bahasa Go Analisis ciri berorientasikan objek bahasa Go Apr 04, 2024 am 11:18 AM

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.

Bagaimana untuk melaksanakan sistem tandatangan elektronik dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem tandatangan elektronik dalam talian menggunakan WebSocket dan JavaScript Dec 18, 2023 pm 03:09 PM

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

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan berita kewangan dalam talian masa nyata WebSocket dan JavaScript: Teknologi utama untuk merealisasikan berita kewangan dalam talian masa nyata Dec 17, 2023 pm 11:21 PM

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan berita kewangan dalam talian masa nyata Pengenalan: Dengan perkembangan Internet, berita kewangan dalam talian masa nyata telah menjadi semakin penting kepada pelabur dan pengamal kewangan. Kaedah komunikasi rangkaian tradisional sukar untuk mencapai kemas kini masa nyata, tetapi protokol WebSocket dan JavaScript menyediakan penyelesaian yang cekap dan boleh dipercayai. Artikel ini akan memperkenalkan prinsip asas WebSocket dan JavaScript, dan menunjukkan cara menggunakannya melalui contoh kod tertentu.

See all articles