Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie JavaScript, um eine Klasse zu kapseln

Verwenden Sie JavaScript, um eine Klasse zu kapseln

韦小宝
韦小宝Original
2018-03-14 17:26:502275Durchsuche

In diesem Artikel wird beschrieben, wie Sie JavaScript verwenden, um eine Klasse zu kapseln. Wenn Sie nicht wissen, wie Sie JavaScript zum Kapseln einer Klasse verwenden, werfen wir einen Blick darauf Kommen wir zum Punkt.

JavaScripter, die andere objektorientierte Sprachen gelernt haben, haben möglicherweise Klassen wie class{} und eine Reihe von Methoden verwendet, die von definiert wurden sie. ,
Aber wenn Anfänger js lernen, sehen sie oft diesen Satz, das heißt, JavaScript ist eine objektorientierte Sprache, aber egal wie viel ich lerne, ich weiß nicht viel über objektorientierte Programmierung. Das Gleiche gilt für mich. Ich habe in den letzten Tagen einiges an Verständnis für die JS-Klassen gewonnen. . .

Die sogenannte Klasse hat die folgenden Funktionen:

1. Statische Eigenschaften und statische Methoden

3 Gemeinsame Methoden

4. Private Eigenschaften, private Methoden

In diesem Artikel wird erläutert, wie man js verwendet, um Klassen zu kapseln und die oben genannten Funktionen zu realisieren,

1. Eine einfache Klasse

Wenn Sie das Gefühl haben, dass es sich nicht um eine Klasse handelt, können Sie dies tun
var Person = function(name, age){
    this.name = name;    this.age = age;    this.sayName = function(){
        console.log(this.name);
    };
}

Wenn das
var Person = function(name, age){
    //共有属性
    this.name = name;    this.age = age;    //共有方法
    this.sayName = function(){
        console.log(this.name);
    };
}
Konstruktor

-Muster verwendet wird ist nicht klar Wenn ja, können Sie einen Blick auf jsObjekt erstellenEntwurfsmuster

2 Eine komplexe Klasse

Mit dem obigen Beispiel werfen Auf dieser Grundlage können wir unsere Verbesserungen vorantreiben.

JS verwendet die obige Simulationsmethode, um die Erstellung von Klassen zu realisieren. Auf dieser Grundlage sind wir mit dem Status Quo nicht zufrieden und möchten ihn zu einem Ganzen zusammenfassen, was förderlicher ist spiegelt JS der Kapselung wider.
var Person = function(name, age){
    //共有属性
    this.name = name;    //共有方法
    this.sayName = function(){
        console.log(this.name);
    };    //静态私有属性(只能用于内部调用)
    var home = "China";    //静态私有方法(只能用于内部调用)
    function sayHome(){
        console.log(home);
    }    //构造器
    this.setAge = function(age){
        console.log(age + 12);
    };    this.setAge(age);
}//静态方法(只能被类来访问)Person.sayAge = function(){
    console.log("your age is 12");
}//静态属性(只能被类来访问)Person.drink = "water";//静态共有方法(类和实例都可以访问)Person.prototype.sayWord = function(){
    console.log("ys is a boy");
}

3. Kapselung von js-Klassen

Hier verwenden wir Abschlüsse, um es zu implementieren. Erklären Sie zunächst das Konzept der Abschlüsse.

Abschlusskonzept: Eine Funktion hat das Recht, auf Variablen in einem anderen

Funktionsbereich
zuzugreifen, d. h. das Erstellen einer weiteren Funktion innerhalb einer Funktion wird wie folgt implementiert:

Der Aufruf lautet wie folgt:
var Person = (function(){
    //静态私有属性方法
    var home = "China";    function sayHome(name){
        console.log(name + "'s home in " + home);
    }    //构造函数
    function _person(name, age){
        var _this = this;        //构造函数安全模式,避免创建时候丢掉new关键字
        if(_this instanceof _person){            //共有属性, 方法
            _this.name = name;
            _this.getHome = function(){
                //内部访问私有属性,方法
                sayHome(_this.name);
            };
            _this.test = sayHome; //用于测试
            //构造器
            _this.setAge = function(age){
                _this.age = age + 12;
            }(age);
        }else{            return new _person(name, age);
        }
    }    //静态共有属性方法
    _person.prototype = {
        constructor: _person,
        drink: "water",
        sayWord: function(){
            console.log("ys is a boy");
        }
    }    return _person;
})();

Wie im obigen Code verwenden wir js, um die Klasse zu implementieren
var p1 = new Person("ys", 12);
p1.getHome();                   //ys's home in China
console.log(p1.age);            //24     

var p2 = Person("ys", 12);
p2.getHome();                   //ys's home in China
console.log(p2.age);            //24   

console.log(p2.test == p1.test);  //true, 证明静态私有变量共享性

Zusammenfassung:

1 und Methoden können auf statisch eingestellt werden, sodass bei jeder Instanziierung keine zusätzlichen Speicherressourcen geöffnet werden müssen, um eine echte Freigabe zu erreichen.

2 Einige öffentliche Attributmethoden müssen nur verwendet werden Interne Programme Um eine gemeinsame Nutzung während der Verarbeitung zu erreichen, legen Sie sie auf eine statische private Attributmethode fest.

3. Wenn Sie bei einigen öffentlichen Attributmethoden eine gemeinsame Nutzung in einem Instanzobjekt erreichen möchten, legen Sie sie auf eine Prototyp-Attributmethode fest.

Das ist alles für diesen Artikel. Wenn Sie nicht den gesamten Inhalt des Artikels verstehen, können Sie beide Seiten problemlos selbst meistern!




Verwandte Empfehlungen:

Verschiedene Möglichkeiten, JavaScript-Kapselung zu schreiben

Javascript-Kapselung Detaillierte Erläuterung der Beispiele für Mobiltelefon-Funktionscodes

Das obige ist der detaillierte Inhalt vonVerwenden Sie JavaScript, um eine Klasse zu kapseln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn