Dieser Artikel fasst mehrere gängige Methoden zum Schreiben objektorientierter JS zusammen und stellt sie Ihnen als Referenz zur Verfügung. Der spezifische Inhalt ist wie folgt
1.Fabrikmethode
var Circle = function() { var obj = new Object(); obj.PI = 3.14159; obj.area = function( r ) { return this.PI * r * r; } return obj; } var c = new Circle(); alert( c.area( 1.0 ) );
2. Formelleres Schreiben
function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = function() { return Circle.PI * this.r * this.r; } var c = new Circle(1.0); alert(c.area());
3.json-Schreibmethode
var Circle={ "PI":3.14159, "area":function(r){ return this.PI * r * r; } }; alert( Circle.area(1.0) );
4. Es gibt einige Änderungen, aber das Wesentliche ist das gleiche wie beim ersten
var Circle=function(r){ this.r=r; } Circle.PI = 3.14159; Circle.prototype={ area:function(){ return this.r*this.r*Circle.PI; } } var obj=new Circle(1.0); alert(obj.area()
Circle.PI = 3.14159; kann in das Attribut eingefügt und als this.PI=3.14159;
geschrieben werdenHäufig verwendet werden die erste und dritte Schreibweise sowie ein ausführliches Beispiel für die dritte Schreibweise
var show={ btn:$('.div1'), init:function(){ var that=this; alert(this); this.btn.click(function(){ that.change(); alert(this); }) }, change:function(){ this.btn.css({'background':'green'}); } } show.init();
Was dabei beachtet werden muss, ist das Zeigeproblem. Hier ist eine kleine Einführung dazu. Ich hoffe, sie wird für alle hilfreich sein.
Zu Beginn wurde die Methode des dynamischen Prototyps verwendet, um benutzerdefinierte Objekte in js zu erstellen, und diese Methode wurde auch sehr reibungslos verwendet.
Bei dieser Methode beginnen die Erstellung und Verwendung von Variablen innerhalb des Objekts mit „this.“
Beispiel: Das Objekt ContactModel hat drei Attribute
, crtnewFriendListLen, crtNewFriendList, crtFindedUserID
und
vier Methoden requestContactList(), requestNewfriendList(), requestFindUser(), requestAddContact()
Wenn Sie auf Ihre eigenen Eigenschaften innerhalb dieser Variablen zugreifen möchten, müssen Sie „this“ mitbringen.
var contactModel; ... contactModel = new ContactModel();
function ContactModel() { // this.contactList; this.crtnewFriendListLen; this.crtNewFriendList; this.crtFindedUserID = "-1"; if(typeof ContactModel._initialized == "undefined") { ContactModel.prototype.requestContactList = function() { } ContactModel.prototype.requestNewfriendList = function() { } ContactModel.prototype.requestFindUser = function(userID) { $.getJSON(mainUrl + "User/getuserinfo",{"uid":userID},function(resultObj) { // this.crtFindedUserID = userID contactModel.crtFindedUserID = userID; uiManager.contectAddPage.receiveFindUserResult(resultObj); }); } ContactModel.prototype.requestAddContact = function(remark) { alert(this.crtFindedUserID); } ContactModel._initialized = true; }; }
Das Folgende ist eine
Standardschreibmethode für JS objektorientiert
:
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>新建网页 1</title> <mce:script type=text/javascript><!-- var person=function(name,age){//定义对象构造方法 this.name=name; this.age=age; } person.prototype={ //封装方法 getName:function(){ alert(this.name); }, getAge:function(){ alert(this.age); } } function test(){//声明调用 var man=new person('jack',12); man.getName() man.getAge() } var test2 ={ //类似静态方法 调用直接:test2.te();即可 te:function(){ alert(); }, te1:function(){ alert(); } } // --></mce:script> </head> <body> <input type=button onclick="test()"/> </body> </html>