[Rekomendasi terkait: tutorial video JavaScript, front-end web]
Artikel ini akan mengeksplorasi konsep yang sangat menarik, yaitu metode atribut tipe dasar. Bagaimana, apakah Anda sedikit bingung? Izinkan saya memberi tahu Anda secara perlahan ~
Dalam bahasa pemrograman berorientasi objek lainnya, seperti Java
dan C++
, atribut adalah konsep unik objek, dan tipe dasarnya adalah tipe dasar.
Ya, itu ide buruk lainnya tentang JavaScript
. Mesinnya memungkinkan kita menggunakan metode properti untuk memanipulasi tipe data dasar seperti objek.
Sebelum menjelaskan fitur aneh ini, kita harus memperjelas terlebih dahulu apa perbedaan antara tipe dasar dan tipe objek?
JavaScript
;7
tipe dasar dalam JavaScript
, yaitu: String
, Number
, Boolean
, BigInt
, Symbol
, null
dan undefined
.{ }
{ }
Membuat dan dapat menyimpan banyak nilai;JavaScript
juga memiliki jenis objek lain, seperti fungsi; ituakan tercakup dalam berorientasi objek. Fitur utama dalam memperkenalkan objek adalah enkapsulasi , yang dapat menyimpan semua jenis data dan metode yang berantakan dalam satu objek. , sehingga mengurangi kompleksitas penggunaan.
Misalnya:
misalkan pengguna = { nama: "xiaoming", Halo() { console.log(`Halo, saya ${nama ini}`); }}user.hello();
Kita merangkum atribut dan metode dari objek user
menjadi sebuah objek, sehingga sangat mudah digunakan. Kita hanya perlu menggunakan obj.attr
untuk memanggil metode atau atribut.
Namun, melakukan hal ini memerlukan overhead tambahan (berorientasi objek memiliki overhead tambahan), yang juga membuat bahasa berorientasi objek C++
lebih lambat dibandingkan C
sebagai objek Ada dua masalah yang sulit untuk diselesaikan ketika menggunakan tipe dasar sebagai objek:
"abc".toUpperCase()
;JavaScript
memecahkan masalah di atas dengan cara yang sangat "sederhana":
String
, Number
, Boolean
dan Symbol
maksud dari aturan di atas adalah tipe dasar tetaplah tipe dasar, namun bagaimana jika kita ingin mengakses metode dan properti dari tipe dasar, kita akan membungkus tipe dasar tersebut ke dalam sebuah objek (pembungkus objek) dan kemudian hancurkan setelah akses selesai. Sejujurnya, ini terdengar agak konyol.
Contoh
let name = "Trump";console.log(name.toUpperCase());//Metode untuk mengakses tipe dasar.
Hasil eksekusi kode di atas adalah sebagai berikut:
Tampaknya tidak ada masalah besar, tetapi banyak hal yang terjadi, dan kita perlu mengetahui hal-hal berikut:
name
adalah tipe string dasar, dan tidak ada yang istimewa tentang ituname
, sebuah file yang berisi Objek khusus dengan nilai string. Objek ini memiliki metode toUpperCase
;toUpperCase
mengembalikannilai variabel itu sendiri tidak berubah, sebagai berikut:
Walaupun penyelesaiannya penuh dengan kompromi (ide buruk), namun hasilnya tetap bagus, dan pencapaian yang dicapai adalah sebagai berikut:
meskipun secara teoritis benar, sebenarnya mesin JavaScript
sangat dioptimalkan untuk proses ini, dan saya menduga itu tidak membuat objek tambahan sama sekali. Ia hanya menyatakan secara lisan bahwa ia mengikuti aturan, seolah-olah ia benar-benar mempunyai benda sementara.
Artikel ini hanya memperkenalkan secara singkat konsep metode tipe dasar dan tidak menjelaskan berbagai metode. Seiring dengan pendalaman tutorial, sejumlah besar metode akan terlibat secara bertahap. Di sini kami hanya mencantumkan secara singkat beberapa metode dan properti tipe dasar yang umum digunakan.
Tipe dasar yang berbeda memiliki metode atribut yang berbeda, yang tercantum dalam kategori berikut:
Atribut panjang,
length
panjang string
console.log("abc".length);
Metode indexOf(ch)
mengembalikan subskrip karakter pertama ch
dalam string
console.log("abc".indexOf('b'));console.log("abc".indexOf('d'))
; hasil eksekusi kode adalah sebagai berikut:
Ketika karakter ada dalam string, indeks (dihitung dari 0
) dikembalikan, jika tidak ditemukan, -1
dikembalikan.
metode concat(str)
, sambungkan dua string
let str1 = "hello ";let str2 = "world!";console.log(str1.concat(str2));console.log(str1);console.log(str2 );
Hasil eksekusi kodenya adalah sebagai berikut:
metode replace(str1,str2)
, gunakan str2
untuk mengganti str1
let str = "javascript";console.log(str.replace('java','996'));console.log(str);
Hasil eksekusi kodenya adalah sebagai berikut:
toFixed(num)
, membulatkan desimal ke presisi yang ditentukan
console.log
(9.3333333.toFixed(0));
metode toString()
, ubah angka menjadi string
3.14.toString();//Konversi ke '3.14'console.log((8).toString(2));//Konversi ke biner '1000'console.log((( 9).toString(2));//Konversi ke biner '1001'console.log((996).toString(16));//Konversi ke string heksadesimal '3e4'Hasil
eksekusi kode adalah sebagai berikut:
metode toExponential()
, diubah menjadi metode penghitungan eksponensial
3.1415926.toExponential
(3));
sebagai berikut:
Metode lainnya akan ditampilkan di bab berikutnya, jadi saya tidak akan membahas detailnya di sini.
Seperti Java
, JavaScript
dapat secara eksplisit membuat "pembungkus objek" untuk tipe dasar melalui operator new
. Pendekatan ini sangat tidak disarankan .
Ada masalah dengan pendekatan ini, misalnya:
let num = new Number(0);console.log(typeof num);console.log(typeof 0);
Hasil eksekusi kode adalah sebagai berikut:
Atau akan terjadi kerancuan dalam penilaian:
misalkan nol = new Number(0);if (zero) { // nol bernilai benar karena merupakan objek console.log('true');}
Hasil eksekusi kodenya adalah sebagai berikut:
Pada saat yang sama, jangan lupa bahwa fungsi String/Number/Boolean
tanpa new
(kata kunci) dapat mengkonversi nilai ke tipe yang sesuai: menjadi string, angka, atau nilai Boolean (tipe asli).
Misalnya:
console.log(typeof Number('123'));
Catatan:
Kedua tipe
null
danundefined
tidak memiliki metode apa pun.
tipe dasar selain null
dan undefined
menyediakan banyak metode yang berguna
JavaScript
metode Implementasi yang dikompromikan, tetapi mencapai hasil yang relatif memuaskan, mewujudkan atribut dan pemanggilan metode tipe dasar dengan biaya lebih rendah;
[Rekomendasi terkait: tutorial video JavaScript, front-end web]
Di atas adalah cara JavaScript menyadari bahwa tipe dasar memiliki hal yang sama atribut dan objek sebagai objek Untuk detail metodenya, harap perhatikan artikel terkait lainnya di jaringan kode sumber untuk informasi lebih lanjut!