Objektorientiertes JavaScript ist in den letzten Jahren ein relativ beliebtes Konzept. Aufgrund meines begrenzten Talents habe ich viele Webprojekte durchgeführt und viele esoterische Materialien und Tutorials im Internet gelesen, aber ich habe immer noch wenig Verständnis dafür Ihre esoterischen Theorien habe ich vor einiger Zeit gelesen. Nachdem ich einige Bücher gelesen habe, werde ich heute für eine Weile so tun, als ob sie sehr tiefgreifend wären falsch, bitte kritisieren Sie mich einfach.
Verstehen Sie zunächst die folgenden Dinge allgemein.
Wenn Sie die Funktion fn(){} oder var fn=function(){} usw. in JS-Code schreiben, können Sie sie natürlich als Objekt, als Array usw. verstehen.
Bevor wir objektorientiert verstehen, wollen wir zunächst die folgenden Dinge verstehen.
1. Objektmethoden aufrufen
Die in der äußersten Schicht von js geschriebene Funktion kann auch als Methode des Fensterobjekts verstanden werden. Die definierte Variable kann auch als Eigenschaft des Fensterobjekts bezeichnet werden. Zum Beispiel:
var test=function(){ alert("123") } 当然上面的你也可以这样定义 function test(){ alert("123") }
Als Methode des Fensterobjekts können wir
test()//Popup-Warnfeld 123 aufrufen (da das Fensterobjekt ein Objekt der obersten Ebene ist, das wir verwenden kann es weglassen)
window.test()//Ein Warnfeld 123 wird angezeigt
window['test']()//Ein Warnfeld 123 wird angezeigt Fenster-Array-Objekt.
Anhand der obigen Beispiele können Sie grob verstehen, wie die Methoden von Objekten verwendet und aufgerufen werden.
2. Private Methoden
Private Methoden sind Methoden, die nur innerhalb des internen Bereichs des Objekts verwendet werden können. Dies kann im Hinblick auf den Variablenumfang verstanden werden.
Die Funktionen in den obigen Beispielen können als private Methoden des Fensterobjekts verstanden werden. Fahren Sie mit dem Beispiel unten fort.
var pet=function(){ function showpet(){ alert("123") } showpet();//私有方法可以在函数作用域范围内使用。 var temp="私有变量只有在函数或者对象作用域范围内能访问" } showpet();//会出错 pet.showpet()//还是不能这样调用 var Penguin=new pet() //实例化一个pet对象 Penguin.showpet()//不好意思这样子还是不能让你调用。
Was soll ich tun, wenn die Methode, die ich definieren möchte, außerhalb des Objektbereichs aufgerufen werden kann? Wie kann ich private Methoden verwenden? Schauen wir uns den nächsten Teil an.
3. Statische Methode
Mit den obigen Fragen fahren wir mit dem obigen Beispiel fort.
var pet=function(){ function showpet(){//私有方法 alert("123") } showpet();//私有方法可以在函数作用域范围内使用。 } pet.show=function(){//给pet对象添加一个静态方法。 alert("456") } pet.name="Penguin"//给pet对象添加一个静态属性。 pet.show()//弹出警告框456 alert(pet.name)//弹出警告框Penguin //继续思维碰撞 ===================== var Penguin=new pet() //实例化一个pet对象 Penguin.show()//不好意思,这个静态方法好像没有被实例继承。有这种思路值得表扬啊,加油!
Das obige Beispiel zeigt Ihnen, was eine statische Methode ist. Natürlich verstehe ich es auch nicht, weil ich auch ein Anfänger bin Sie wissen, wie man es für ein Objekt schreibt, eine statische Methode, nur wie man die statische Methode aufruft. Vielleicht werden Sie es eines Tages plötzlich verstehen und zurückkommen, um es mir beizubringen. Schauen wir uns anhand der obigen Fragen die Methoden an, die von instanziierten Objekten aufgerufen werden können.
4. Öffentliche Methoden
Öffentliche Methoden werden normalerweise durch Ändern des Prototyps eines Objekts implementiert. Dieser Satz ist äußerst anmaßend, bitte ignorieren Sie ihn, wenn Sie sich vage fühlen).
Ändern Sie die Objektprototypmethode und fahren Sie mit dem obigen Beispiel fort.
pet.prototype.setname=function(str){//通过修改原型添加一个公有方法,用于添加修改实例对象的name name=str; }
Sehen Sie sich das Beispiel an:
var pet=function(){ function showname(){//私有方法 alert(this.name) } this.show=function(){ //如果这里不理解,请注意这个方法下面就要介绍了。 showname(); } } pet.prototype.setname=function(str){ name=str; } var Penguin=new pet() Penguin.setname("Penguin");//添加实例的name值为Penguin Penguin.show(); //弹出Penguin Penguin.setname("wind");//添加实例的name值为wind Penguin.show(); //弹出wind
Führen Sie den Code aus und haben Sie Spaß.
<script> var pet=function(){ name:"123", function showname(){//私有方法 alert(this.name) } this.show=function(){ showname(); } } pet.prototype.setname=function(str){ name=str; } var Penguin=new pet() Penguin.setname("Penguin"); Penguin.show(); Penguin.setname("wind"); Penguin.show(); </script>
5. Privilegierte Methode (externe Objekt- oder Funktionsschnittstelle)
Tatsächlich haben wir diese Methode bereits im obigen Beispiel verwendet. Diese Methode kann durch instanziierte Objektvererbung aufgerufen werden. Durch Definieren der Methode über das Schlüsselwort thsi im Konstruktor. Auf privilegierte Methoden kann außerhalb des Konstruktors öffentlich zugegriffen werden (beschränkt auf instanziierte Objekte) und sie können auch auf private Mitglieder und Methoden zugreifen, sodass sie sich am besten als Schnittstellen für Objekte oder Konstruktoren eignen. Durch privilegierte Funktionen können wir den Zugriff öffentlicher Methoden auf private Methoden steuern. das viele Anwendungen in JS-Framework-Erweiterungen hat.
Leser können denken, dass das Obige ein Absatz von P ist. Schauen wir uns an, wie man eine privilegierte Methode definiert, wie man auf eine privilegierte Methode verweist, und rufen wir weiterhin die obigen Beispiele auf, um sie zu sehen.
var pet=function(){ function showname(){//私有方法 alert(this.name) } this.show=function(){//通过使用this关键字定义一个特权方法。 showname(); //在特权方法中访问私有方法; } } pet.prototype.setname=function(str){ name=str; } var Penguin=new pet();//实例化一个pet对象 Penguin.setname("Penguin");//调用公有方法修改 Penguin.show(); //调用特权方法访问私有方法,弹出name
Erstellen Sie zunächst eine privilegierte Methode, indem Sie this.fn=function(){} im Konstruktor verwenden. Greifen Sie auf private Methoden in privilegierten Funktionen zu.
Instanziierte Objekte können einige private Methoden verwenden, indem sie auf privilegierte Funktionen zugreifen.
Der erste Teil ist vorerst hier. Im nächsten Teil wird anhand eines Beispiels erläutert, wie B objektorientiert installiert wird.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle interessierten Freunde hilfreich ist. Vielen Dank für die Unterstützung der PHP-Chinese-Website.