1. Ikhtisar
Dalam bahasa Java, kita dapat mendefinisikan kelas kita sendiri dan membuat objek berdasarkan kelas -kelas ini untuk digunakan. Dalam JavaScript, kita juga dapat mendefinisikan kelas kita sendiri, seperti mendefinisikan kelas pengguna, kelas hashtable, dll.
Saat ini di JavaScript, ada beberapa kelas standar, seperti tanggal, array, regexp, string, matematika, angka, dll., Yang memberi kami banyak kenyamanan untuk pemrograman. Tetapi untuk program klien yang kompleks, ini jauh dari cukup.
Tidak seperti Java, Java2 memberi kami banyak kelas standar, yang pada dasarnya memenuhi kebutuhan pemrograman kami. Namun, JavaScript menyediakan beberapa kelas standar, dan banyak kebutuhan pemrograman perlu diimplementasikan oleh diri kita sendiri. Misalnya, JavaScript tidak memiliki tabel hashtable, yang tidak nyaman dalam menangani nilai -nilai kunci.
Oleh karena itu, saya pribadi berpikir bahwa tampilan objek JavaScript yang lengkap harus sebagai berikut:
2. Konsep Dasar
1. Sesuaikan objek.
Menurut mekanisme ekstensi objek JS, pengguna dapat menyesuaikan objek JS, yang mirip dengan bahasa Java.
Sesuai dengan objek kustom adalah objek standar JS, seperti tanggal, array, matematika, dll.
2. Prototipe
Dalam JS, ini adalah cara untuk membuat properti dan metode objek, dan melalui prototipe, Anda dapat menambahkan properti dan metode baru ke objek.
Dengan prototipe kami dapat menambahkan properti dan metode baru ke objek standar JS, misalnya, untuk objek string, kami dapat menambahkan trim metode baru () ke dalamnya.
Tidak seperti bahasa pemrograman yang ketat seperti Java, kita dapat secara dinamis menambahkan properti baru ke objek JS selama runtime.
Tiga, aturan tata bahasa
1. Metode Pembuatan Objek
1) Metode inisialisasi objek
Format: ObjectName = {Property1: Value1, Property2: Value2,…, Propertiyn: Valuen}
Properti adalah properti objek
Nilai adalah nilai objek, dan nilainya bisa menjadi salah satu dari string, angka atau objek
Misalnya: var user = {name: "user1", usia: 18};
var user = {name: "user1", job: {gaji: 3000, judul: programmer}
Metode yang juga dapat diinisialisasi dengan cara ini, misalnya:
var user = {name: "user1", usia: 18, getName: function () {return this.name; }}Berikut ini akan dijelaskan dengan fokus metode konstruktor, termasuk definisi atribut dan metode, dan juga akan dijelaskan dengan mengacu pada metode konstruktor.
2) Metode konstruktor
Tulis konstruktor dan buat objek melalui metode baru. Konstruktor bisa membawa parameter konstruktor
Misalnya:
fungsi pengguna (name, usia) {this.name = name; this.age = usia; this.canfly = false; } var use = pengguna baru ();2. Tentukan sifat objek
1) Dalam JS, tiga jenis properti dapat didefinisikan untuk objek: Properti Pribadi, Properti Instan dan Properti Kelas. Mirip dengan Java, properti pribadi hanya dapat digunakan di dalam objek. Properti instan harus direferensikan melalui instance objek, dan properti kelas dapat direferensikan langsung melalui nama kelas.
2) Definisi atribut pribadi
Atribut pribadi hanya dapat didefinisikan dan digunakan dalam konstruktor.
Format sintaks: var propertiname = nilai;
Misalnya:
fungsi pengguna (usia) {this.age = usia; var ischild = usia <12; this.islittLechild = ischild; } var user = pengguna baru (15); waspada (user.islittLechild); // Cara yang benar peringatan (user.ischild); // Kesalahan: Objek tidak mendukung properti atau metode ini3) Ada juga dua cara untuk mendefinisikan atribut instance:
Metode prototipe, format sintaks: functionName.prototype.propertyname = nilai
Metode ini, format sintaks: this.propertyname = nilai, perhatikan lokasi yang digunakan dalam contoh berikut
Nilai di atas dapat berupa penciptaan, angka, dan objek karakter.
Misalnya:
function user () {} user.prototype.name = "user1"; User.prototype.age = 18; var user = pengguna baru (); peringatan (user.age); ―666666 secara ―66666666666 ACOD ―66666666666 Ch A ima ―666666666666 A / kata ―66666666666 A / 663) Definisi Atribut Kelas
Sintaks Format: functionName.propertyname = nilai
Misalnya:
function user () {} user.max_age = 200; User.min_age = 0; peringatan (user.max_age);Lihat Properti Kelas Objek Standar JS:
Number.max_value // nilai numerik maksimum Math.pi // pi
4) Selain metode yang lebih formal di atas, ada juga cara yang sangat khusus untuk mendefinisikan atribut, format sintaks: OBJ [indeks] = nilai
contoh:
function user (name) {this.name = name; this.age = 18; ini [1] = "OK"; ini [200] = "tahun"; } var user = pengguna baru ("user1"); peringatan (pengguna [1]);Dalam contoh di atas, penting untuk dicatat bahwa atribut usia tidak diperoleh melalui ini [1], ini juga tidak dapat diperoleh melalui ini [0]. Artinya, indeks yang ditentukan oleh indeks harus direferensikan menggunakan mode indeks, dan tidak ditentukan oleh mode indeks, dan harus dirujuk dengan cara normal.
3. Tentukan metode objek
1) Ada tiga jenis metode yang dapat didefinisikan untuk objek dalam JS: metode pribadi, metode instan dan metode kelas, mirip dengan Java:
Metode pribadi hanya dapat digunakan di dalam objek
Metode instan harus dipakai sebelum dapat digunakan
Metode kelas dapat digunakan langsung melalui nama kelas
Catatan: Definisi metode ini tidak dapat dilakukan melalui metode indeks yang disebutkan di atas.
2) Tentukan metode pribadi
Metode pribadi harus didefinisikan dalam badan konstruktor dan hanya dapat digunakan dalam badan konstruktor.
Sintaks Format: Function MethodName (arg1,…, argn) {}
Misalnya:
function user (name) {this.name = name; function getNamelength (namestr) {return namestr.length; } this.namelength = getNamelength (this.name); }3) Tentukan metode instan, saat ini dua metode dapat digunakan:
Metode prototipe, digunakan di luar konstruktor, format sintaks:
functionName.prototype.methodname = metode;
atau
functionName.prototype.methodname = function (arg1, ..., argn) {};
Metode ini, digunakan di dalam format konstruktor, sintaks:
this.methodname = metode;
atau
this.methodname = function (arg1,…, argn) {};
Dalam deskripsi sintaks di atas, metode adalah metode yang sudah ada di luar. Metode objek yang akan ditentukan oleh MethodName berarti bahwa metode eksternal ditetapkan ke metode objek secara langsung.
Mendefinisikan metode objek dalam bentuk fungsi (arg1, ..., argn) {} adalah sesuatu yang harus dikuasai pengembang.
Beberapa contoh mendefinisikan metode instan: Contoh 1
function user (name) {this.name = name; this.getName = getUserName; this.setname = setUsername; } function getUserName () {return this.name; } Function setusername (name) {this.name = name; }Beberapa contoh mendefinisikan metode instan: Contoh 2
function user (name) {this.name = name; this.getName = function () {return this.name; }; this.setName = function (newName) {this.name = newName; }; }Beberapa contoh mendefinisikan metode instan: Contoh 3
function user (name) {this.name = name; } User.prototype.getName = getUserName; User.prototype.setName = setUsername (); fungsi getUserName () {return this.name; } Function setusername (name) {this.name = name; }Beberapa contoh mendefinisikan metode instan: Contoh 4
function user (name) {this.name = name; } User.prototype.getName = function () {return this.name; }; User.prototype.setName = function (newName) {this.name = newName; };4) Tentukan metode kelas
Metode kelas perlu didefinisikan di luar konstruktor dan dapat dirujuk secara langsung dengan nama konstruktor.
Format Sintaks:
functionName.methodname = metode;
atau
functionName.methodname = function (arg1, ..., argn) {};
contoh:
function user (name) {this.name = name; } User.getmaxage = getUsermaxage; fungsi getusermaxage () {return 200; }atau
User.getmaxage = function () {return 200;};
peringatan (user.getmaxage ());
4. Referensi properti dan metode
1) Dari perspektif visibilitas:
Properti dan metode pribadi hanya dapat dirujuk di dalam objek.
Properti dan metode instan dapat digunakan di mana saja, tetapi harus direferensikan oleh objek.
Properti dan metode kelas dapat digunakan di mana saja, tetapi tidak dapat direferensikan oleh instance suatu objek (ini berbeda dari Java, di mana anggota statis dapat diakses dengan contoh).
2) Dari tingkat objek:
Mirip dengan referensi ke Java Beans, referensi mendalam dapat dibuat.
Beberapa cara:
Properti Sederhana: Obj.PropertyName
Properti Objek: obj.innerobj.propertyname
Indeks Properti: obj.propertyname [indeks]
Untuk referensi yang lebih dalam, mirip dengan yang di atas.
3) Dari metode definisi:
Atribut yang ditentukan melalui metode indeks harus direferensikan melalui metode indeks.
Atribut yang ditentukan oleh metode non-indeks harus dirujuk dengan cara normal.
Catatan juga: Metode objek tidak dapat didefinisikan melalui metode indeks.
5. Penambahan Dinamis dan Penghapusan Properti dan Metode
1) Untuk suatu objek yang telah dipakai, kita dapat secara dinamis menambahkan dan menghapus sifat dan metodenya. Sintaksnya adalah sebagai berikut (dengan asumsi bahwa instance objek adalah OBJ):
Secara dinamis meningkatkan sifat objek
obj.newpropertyname = nilai;
Meningkatkan metode objek secara dinamis
obj.newmethodname = metode atau = fungsi (arg1, ..., argn) {}
Hapus sifat objek secara dinamis
Hapus obj.propertyname
Hapus metode objek secara dinamis
Hapus obj.methodname
2) Contoh:
function user (name) {this.name = name; this.age = 18; } var user = pengguna baru ("user1"); user.sister = "Susan"; alert (user.sister); // jalankan melalui hapus user.sister; alert (user.sister); // Laporan Kesalahan: Objek tidak mendukung properti ini user.getMothername = function () {return "mary";} waspada (user.getMotherName ()); // jalankan melalui hapus user.getMotherName; waspada (user.getMotherName ()); // Laporkan Kesalahan: Objek tidak mendukung metode iniEmpat, ringkasan
1. Mekanisme objek khusus adalah salah satu mekanisme paling menarik untuk JS. Ini sangat bagus untuk programmer C ++ dan Java!
2. Ada dua cara untuk membuat objek: Object Initializer dan Konstruktor.
3. Properti dan metode objek, kendala dengan visibilitas, dan atribut dan metode dengan visibilitas yang berbeda didefinisikan secara berbeda.
Artikel di atas didasarkan pada objek JS, atribut operasi dan metode, yang merupakan semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.