Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang penggunaan kemahiran JavaScript wrapper objects_javascript

Penjelasan terperinci tentang penggunaan kemahiran JavaScript wrapper objects_javascript

WBOY
WBOYasal
2016-05-16 15:50:531096semak imbas

Objek JavaScript ialah nilai komposit: ia ialah koleksi sifat dan nilai yang dinamakan. Nilai atribut dirujuk melalui simbol "." Apabila nilai harta adalah fungsi, ia dipanggil kaedah.

①Sekeping kod yang sering anda gunakan tetapi mungkin tidak memahami prinsip asasnya yang sebenar:

var s = "hello world!";
var word = s.substring(s.indexOf(" ")+1,s.length);
 

Seperti yang dinyatakan sebelum ini, pembolehubah s di sini hanyalah jenis rentetan primitif. Bagaimanakah ia boleh mempunyai atribut (s.length) dan kaedah (s.indexOf(), s.substring())? Ya, ini berkaitan dengan objek pembungkusan yang akan kami perkenalkan. Sebabnya ialah: selagi sifat rentetan s dirujuk, JavaScript akan menukar nilai rentetan menjadi objek dengan memanggil String(s) baharu Objek ini mewarisi kaedah objek String dan digunakan untuk memproses rujukan kepada harta itu. Sebaik sahaja rujukan hartanah tamat, objek yang baru dibuat akan dimusnahkan.

Seperti rentetan, nombor dan nilai Boolean juga mempunyai kaedah tersendiri: cipta objek sementara melalui pembina Number() dan Boolean(). Objek sementara yang dibuat apabila mengakses rentetan, nombor atau sifat Boolean ialah objek pembalut. Baki dua daripada lima jenis primitif, null dan undefined, tidak mempunyai objek pembalut: mengakses sifatnya menyebabkan Ralat Jenis Tidak Ditangkap. Selepas memahami kod di atas, kemudian lihat kod berikut:

var s = "test";
s.len = 4;//给它设置一个属性
var t = s.len;

Pelajar yang tidak serius di sini akan berfikir bahawa t akhir adalah bersamaan dengan 4. Bukankah tidak sama dengan 4 pada akhirnya? Ya, nilai t pada penghujungnya tidak ditentukan. Jika anda ingin tahu sebabnya, sila teruskan membaca analisis: Ternyata baris kedua kod di sini hanya mencipta objek rentetan sementara, memberikan nilai 4 kepada atribut len, dan kemudian memusnahkan objek. Baris ketiga mencipta objek rentetan baharu melalui rentetan asal s (ini bukan objek yang dicipta oleh baris kedua kod, objek yang dicipta oleh baris kedua kod telah dimusnahkan) dan cuba membaca atribut lennya, atribut ini Sememangnya tidak wujud, jadi hasil ungkapan tidak ditentukan. Kod ini menggambarkan bahawa nilai harta atau kaedah yang membaca rentetan, nombor, dan nilai Boolean (sebenarnya nilai harta yang sepadan atau kaedah objek yang dibalut) berkelakuan seperti objek. Tetapi jika anda cuba memberikan nilai kepada harta itu, operasi ini akan diabaikan: pengubahsuaian hanya berlaku pada objek sementara, dan objek sementara tidak akan dikekalkan.

Nota: Anda boleh mencipta objek pembalut secara eksplisit melalui String(), Number(), dan Boolean() pembina:

var s = "test",n=1,b=true;//一个字符串、数字和布尔值
var S = new String(s);//一个字符串对象
var N = new Number(n);//一个数值对象
var B = new Boolean(b);//一个布尔对象

JavaScript akan menukar objek yang dibalut menjadi nilai primitif apabila perlu, jadi objek S, N dan B dalam kod di atas selalunya, tetapi tidak selalu, berkelakuan sama seperti nilai ​​​s, n, dan b. Pengendali kesamaan "==" menganggap nilai asal dan objek yang dibalutnya sebagai sama, tetapi pengendali kesamaan "===" menganggapnya sebagai tidak sama rata. Anda juga boleh melihat perbezaan antara nilai asal dan objek yang dibalut melalui operator jenis:

    ①typeof(s);  ->"string"
     typeof(S);  ->"object"
    ②typeof(n);  ->"string"
     typeof(N);  ->"object"
    ③typeof(b);  ->"string"
     typeof(B);  ->"object"

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

Kenyataan:
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