Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah kaedah awam dan kaedah persendirian dalam javascript

Apakah kaedah awam dan kaedah persendirian dalam javascript

青灯夜游
青灯夜游asal
2022-02-07 14:50:372634semak imbas

Dalam JavaScript, kaedah awam merujuk kepada kaedah yang boleh diakses dan dipanggil dari luar kaedah peribadi merujuk kepada kaedah yang diisytiharkan dalam pembina objek dan tidak kelihatan dan tidak boleh diakses oleh luar.

Apakah kaedah awam dan kaedah persendirian dalam javascript

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

1: Kaedah awam

Kaedah awam ialah kaedah yang boleh diakses dan dipanggil secara luaran

// 对象中
var test1 = {
    name:'大白',
    getName:function(){
        console.log(this.name);
    }
}
//调用
test1.getName();//大白

// 构造函数中
function test2(name,age){
    this.name = name;
    this.age = age;
    //公有方法
    this.getName = function(){
        console.log(this.name);
    }
}
// 在原型中
test2.prototype.getAge = function(){
    console.log(this.age);
}
//调用
var test3 = new test2('小白',12);
test3.getName();//小白
test3.getAge();//12

2: Kaedah persendirian dan kaedah awam

Kaedah istimewa merujuk kepada kaedah awam yang mempunyai akses kepada harta persendirian dalaman dan persendirian kaedah Kaedah (kaedah yang boleh mengakses kaedah persendirian dan atribut persendirian dipanggil kaedah istimewa dan juga merupakan jenis kaedah awam)

Kaedah persendirian diisytiharkan dalam pembina objek dan tidak kelihatan kepada luar dan kaedah tidak boleh diakses.

Gunakan cara yang berbeza untuk menentukan kaedah persendirian dan kaedah istimewa dalam bentuk yang berbeza

Dalam objekKami menggunakan ungkapan objek Objek untuk mencipta objek dan menambah beberapa sifat dan kaedah, Kemudian panggil terus secara statik. Contohnya, Rest.getName();

Fungsi pelaksanaan segeraData peribadi objek diletakkan dalam ekspresi pelaksanaan segera (IIFE) fungsi tanpa nama, yang bermaksud bahawa fungsi ini hanya wujud apabila ia dipanggil Saat ia dilaksanakan, ia akan dimusnahkan serta-merta

var yourObject = (function() {

 // 私有属性和方法
 return {
 // 公有方法和属性
 }
}) ();

Ini adalah sama dengan takrifan Rehat sebelum ini, dan boleh diakses terus melalui Objek anda. Akses modular jenis ini agak berkuasa.

var test4 = (function(){
    //私有属性
    var total = 10;
    // 私有方法
    var buy = function(){
        total--;
    }
    var get = function(){
        return total;
    }
    return {
        name:'小白白',
        getTotal:get,//使用了闭包的方式来简介使用内部私有变量
        buyfood:buy
    }
})();
test4.buyfood();
console.log(test4.name);//小白白
console.log(test4.getTotal());//9

menggunakan penutupan untuk secara tidak langsung menggunakan pembolehubah persendirian dalaman

Sangat mudah untuk menentukan sifat dan kaedah persendirian dalam pembina perlu menggunakan penutupan, kita boleh memulakan data apabila memanggil

// 构造函数中

function test5(name) {
 // 私有属性
 var total = 10;

 // 公有属性
 this.name = name;

 // 私有方法
 function _buyFood() {
    total--;
 }

 // 特权方法,才能访问私有的属性和私有的方法
 this.buy = function() {
     _buyFood();
 }

 this.getTotal = function() {
    return total;
 }
}

// 公有方法, 注意这里不能访问私有成员_total
test5.prototype.getName = function() {
    //console.log(_total); // Uncaught ReferenceError: _total is not defined
    return this.name;
}

var test6 = new test5('大小白');
console.log(test6.getName()); // '大小白'
test6.buy();
console.log(test6.getTotal()); // 9

digabungkan dengan

boleh dihantar menggunakan kaedah pembina Beberapa data yang dimulakan, tetapi atribut ahli persendirian tidak boleh diakses dalam kaedah awam Jika terdapat banyak kaedah awam yang perlu mengakses data peribadi, kami akan menulis semuanya dalam kaedah istimewa, yang akhirnya akan membawa banyak kaedah yang tidak diperlukan untuk setiap kejadian.

var test7 = (function(){
    // 私有属性
    var total = 10;

    // 私有方法
    function buyFood(){
        total--;
    }
    // 构造函数
    function test7(name){
        this.name = name;
        this.getTotal = function(){
            return total;
        }
    }
    // 公有方法  这里不是test7内部的私有
    test7.prototype.buy = function(){
        console.log(total);
        buyFood();
    }
    test7.prototype.getName = function(){
        return this.name;
    }
    return test7;
})();
var test0 = new test7('大大白');
console.log(test0.getName());//大大白
test0.buy();//10
console.log(test0.getTotal());//9
[Cadangan berkaitan:

Tutorial pembelajaran javascript]

Atas ialah kandungan terperinci Apakah kaedah awam dan kaedah persendirian dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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