Adakah javascript mentakrifkan kaedah peribadi?

PHPz
Lepaskan: 2023-05-09 10:33:37
asal
530 orang telah melayarinya

JavaScript ialah bahasa pengaturcaraan berorientasikan objek yang menyediakan beberapa kaedah enkapsulasi untuk menyembunyikan data atau kaedah. Dalam JS, kita boleh menggunakan fungsi dan objek untuk mencapai enkapsulasi. Kaedah enkapsulasi yang biasa digunakan ialah menggunakan penutup atau pembina. Walau bagaimanapun, enkapsulasi hanya menswastakan beberapa sifat atau kaedah, tidak benar-benar menswastakannya.

Dalam JavaScript, tiada kaedah peribadi formal. Walau bagaimanapun, kami boleh menggunakan beberapa helah untuk mensimulasikan kaedah persendirian untuk mencapai perlindungan data dan enkapsulasi.

Cara biasa untuk mensimulasikan kaedah peribadi ialah menggunakan penutupan. Kita boleh mentakrifkan beberapa pembolehubah dan fungsi tempatan di dalam fungsi Pembolehubah dan fungsi ini membentuk penutupan dan boleh mengakses pembolehubah dan parameter di dalam fungsi (skop induk). Dari dunia luar, kita tidak boleh mengakses terus pembolehubah dan fungsi ini, sekali gus mencapai tujuan mensimulasikan keperibadian.

Sebagai contoh, kami ingin menentukan objek yang mempunyai kaedah awam dan kaedah persendirian, di mana kaedah persendirian hanya boleh digunakan di dalam objek. Kita boleh menggunakan penutupan untuk mencapai ini:

function MyObject() {
    this.publicMethod = function() {
        console.log('This is a public method.');
        privateMethod();
    };
  
    var privateMethod = function() {
        console.log('This is a private method.');
    };
}
Salin selepas log masuk

Dalam contoh ini, pembolehubah privateMethod ditakrifkan di dalam pembina, jadi ia hanya boleh diakses oleh kaedah awam di dalam pembina, dengan itu mencapai Kesan "palsu" daripada kaedah persendirian.

Satu lagi cara biasa untuk melaksanakan kaedah persendirian "palsu" ialah menggunakan konvensyen penamaan. Dengan memulakan nama kaedah dengan _, kami menunjukkan bahawa kaedah ini adalah peribadi dan tidak boleh dipanggil di luar objek. Sudah tentu, pendekatan ini tidak benar-benar melindungi kaedah, kerana dalam JavaScript kita masih boleh memanggil sifat dan kaedah objek secara langsung.

Dalam ECMAScript 6, kita boleh menggunakan sifat jenis Simbol untuk mencipta kaedah peribadi. Simbol ialah jenis data asas baharu yang boleh digunakan untuk mencipta sifat objek. Oleh kerana sifat jenis Simbol adalah unik, kami boleh menggunakannya untuk mencipta kaedah persendirian untuk memastikan tiada isu dengan konflik nama kaedah. Sebagai contoh, kita boleh mentakrifkan objek seperti ini:

const PRIVATE_METHOD = Symbol();

class MyClass {
    constructor() {
        this[PRIVATE_METHOD] = function() {
            console.log('This is a private method.');
        };
    }
  
    publicMethod() {
        console.log('This is a public method.');
        this[PRIVATE_METHOD]();
    }
}

let object = new MyClass();
object.publicMethod();  // 输出 "This is a public method." 和 "This is a private method."
object[PRIVATE_METHOD]();  // 抛出TypeError异常,因为该方法是私有的
Salin selepas log masuk

Dalam contoh ini, kita menswastakan kaedah persendirian dengan menggunakan atribut jenis Simbol, memastikan kaedah persendirian tidak boleh diakses di luar objek.

Ringkasnya, JavaScript tidak mempunyai kaedah persendirian langsung, tetapi kami boleh menggunakan penutupan, konvensyen penamaan atau sifat jenis Simbol untuk melaksanakan fungsi kaedah persendirian secara tidak langsung. Dalam pembangunan sebenar, kita perlu memilih cara yang paling sesuai untuk melaksanakan enkapsulasi data mengikut situasi tertentu.

Atas ialah kandungan terperinci Adakah javascript mentakrifkan kaedah peribadi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!